extends:
- ./lint/eslintrc-gjs.yml
- ./lint/eslintrc-shell.yml
-overrides:
- - files:
- - js/ui/init.js
- - js/ui/environment.js
- - js/ui/scripting.js
- - js/misc/dependencies.js
- - js/dbusServices/**
- - js/extensions/**
- - js/portalHelper/**
- - subprojects/extensions-app/**
- - subprojects/extensions-tool/**
- - tests/**
- parserOptions:
- sourceType: module
+parserOptions:
+ sourceType: module
import {ExtensionPrefsDialog} from './extensionPrefsDialog.js';
import {ServiceImplementation} from './dbusService.js';
-const {deserializeExtension} = imports.misc.extensionUtils;
+import {deserializeExtension} from './misc/extensionUtils.js';
const {loadInterfaceXML} = imports.misc.dbusUtils;
const ExtensionsIface = loadInterfaceXML('org.gnome.Shell.Extensions');
import {ServiceImplementation} from './dbusService.js';
const {loadInterfaceXML, loadSubInterfaceXML} = imports.misc.dbusUtils;
-const Signals = imports.misc.signals;
+import * as Signals from './misc/signals.js';
const ScreencastIface = loadInterfaceXML('org.gnome.Shell.Screencast');
STOPPED: 'STOPPED',
};
-var Recorder = class extends Signals.EventEmitter {
+class Recorder extends Signals.EventEmitter {
constructor(sessionPath, x, y, width, height, filePath, options,
invocation) {
super();
return Gst.parse_launch_full(fullPipeline, null,
Gst.ParseFlags.FATAL_ERRORS);
}
-};
+}
export const ScreencastService = class extends ServiceImplementation {
static canScreencast() {
import {ExtensionBase, GettextWrapper} from './sharedInternals.js';
-const {extensionManager} = imports.ui.main;
+import {extensionManager} from '../ui/main.js';
export class Extension extends ExtensionBase {
static lookupByUUID(uuid) {
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-/* exported AuthList */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import St from 'gi://St';
const SCROLL_ANIMATION_TIME = 500;
}
});
-var AuthList = GObject.registerClass({
+export const AuthList = GObject.registerClass({
Signals: {
'activate': { param_types: [GObject.TYPE_STRING] },
'item-added': { param_types: [AuthListItem.$gtype] },
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported AuthPrompt */
-
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Animation = imports.ui.animation;
-const AuthList = imports.gdm.authList;
-const Batch = imports.gdm.batch;
-const GdmUtil = imports.gdm.util;
-const Params = imports.misc.params;
-const ShellEntry = imports.ui.shellEntry;
-const UserWidget = imports.ui.userWidget;
-const {wiggle} = imports.misc.animationUtils;
-
-var DEFAULT_BUTTON_WELL_ICON_SIZE = 16;
-var DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1000;
-var DEFAULT_BUTTON_WELL_ANIMATION_TIME = 300;
-
-var MESSAGE_FADE_OUT_ANIMATION_TIME = 500;
+
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Animation from '../ui/animation.js';
+import * as AuthList from './authList.js';
+import * as Batch from './batch.js';
+import * as GdmUtil from './util.js';
+import * as Params from '../misc/params.js';
+import * as ShellEntry from '../ui/shellEntry.js';
+import * as UserWidget from '../ui/userWidget.js';
+import {wiggle} from '../misc/animationUtils.js';
+
+const DEFAULT_BUTTON_WELL_ICON_SIZE = 16;
+const DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1000;
+const DEFAULT_BUTTON_WELL_ANIMATION_TIME = 300;
+
+const MESSAGE_FADE_OUT_ANIMATION_TIME = 500;
/** @enum {number} */
-var AuthPromptMode = {
+export const AuthPromptMode = {
UNLOCK_ONLY: 0,
UNLOCK_OR_LOG_IN: 1,
};
/** @enum {number} */
-var AuthPromptStatus = {
+export const AuthPromptStatus = {
NOT_VERIFYING: 0,
VERIFYING: 1,
VERIFICATION_FAILED: 2,
};
/** @enum {number} */
-var BeginRequestType = {
+export const BeginRequestType = {
PROVIDE_USERNAME: 0,
DONT_PROVIDE_USERNAME: 1,
REUSE_USERNAME: 2,
};
-var AuthPrompt = GObject.registerClass({
+export const AuthPrompt = GObject.registerClass({
Signals: {
'cancelled': {},
'failed': {},
* are not used elsewhere. These APIs may ultimately get dropped entirely and
* replaced by something else.
*/
-/* exported ConcurrentBatch, ConsecutiveBatch */
-const GObject = imports.gi.GObject;
-const Signals = imports.misc.signals;
+import GObject from 'gi://GObject';
+import * as Signals from '../misc/signals.js';
-var Task = class extends Signals.EventEmitter {
+export class Task extends Signals.EventEmitter {
constructor(scope, handler) {
super();
return null;
}
-};
+}
-var Hold = class extends Task {
+export class Hold extends Task {
constructor() {
super(null, () => this);
isAcquired() {
return this._acquisitions > 0;
}
-};
+}
-var Batch = class extends Task {
+export class Batch extends Task {
constructor(scope, tasks) {
super();
cancel() {
this.tasks = this.tasks.splice(0, this._currentTaskIndex + 1);
}
-};
+}
-var ConcurrentBatch = class extends Batch {
+export class ConcurrentBatch extends Batch {
process() {
let hold = this.runTask();
// concurrently.
this.nextTask();
}
-};
+}
-var ConsecutiveBatch = class extends Batch {
+export class ConsecutiveBatch extends Batch {
process() {
let hold = this.runTask();
this.nextTask();
}
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported CredentialManager */
-const Signals = imports.misc.signals;
+import * as Signals from '../misc/signals.js';
-var CredentialManager = class CredentialManager extends Signals.EventEmitter {
+export class CredentialManager extends Signals.EventEmitter {
constructor(service) {
super();
get service() {
return this._service;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported LoginDialog */
/*
* Copyright 2011 Red Hat, Inc
*
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-const AccountsService = imports.gi.AccountsService;
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const Gdm = imports.gi.Gdm;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const AuthPrompt = imports.gdm.authPrompt;
-const Batch = imports.gdm.batch;
-const BoxPointer = imports.ui.boxpointer;
-const CtrlAltTab = imports.ui.ctrlAltTab;
-const GdmUtil = imports.gdm.util;
-const Layout = imports.ui.layout;
-const LoginManager = imports.misc.loginManager;
-const Main = imports.ui.main;
-const PopupMenu = imports.ui.popupMenu;
-const Realmd = imports.gdm.realmd;
-const UserWidget = imports.ui.userWidget;
+import AccountsService from 'gi://AccountsService';
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import Gdm from 'gi://Gdm';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as AuthPrompt from './authPrompt.js';
+import * as Batch from './batch.js';
+import * as BoxPointer from '../ui/boxpointer.js';
+import * as CtrlAltTab from '../ui/ctrlAltTab.js';
+import * as GdmUtil from './util.js';
+import * as Layout from '../ui/layout.js';
+import * as LoginManager from '../misc/loginManager.js';
+import * as Main from '../ui/main.js';
+import * as PopupMenu from '../ui/popupMenu.js';
+import * as Realmd from './realmd.js';
+import * as UserWidget from '../ui/userWidget.js';
const _FADE_ANIMATION_TIME = 250;
const _SCROLL_ANIMATION_TIME = 500;
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
-var UserListItem = GObject.registerClass({
+export const UserListItem = GObject.registerClass({
Signals: { 'activate': {} },
}, class UserListItem extends St.Button {
_init(user) {
}
});
-var UserList = GObject.registerClass({
+const UserList = GObject.registerClass({
Signals: {
'activate': { param_types: [UserListItem.$gtype] },
'item-added': { param_types: [UserListItem.$gtype] },
}
});
-var SessionMenuButton = GObject.registerClass({
+const SessionMenuButton = GObject.registerClass({
Signals: { 'session-activated': { param_types: [GObject.TYPE_STRING] } },
}, class SessionMenuButton extends St.Bin {
_init() {
}
});
-var LoginDialog = GObject.registerClass({
+export const LoginDialog = GObject.registerClass({
Signals: {
'failed': {},
'wake-up-screen': {},
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported getOVirtCredentialsManager */
-const Gio = imports.gi.Gio;
-const Credential = imports.gdm.credentialManager;
+import Gio from 'gi://Gio';
+import * as Credential from './credentialManager.js';
-var SERVICE_NAME = 'gdm-ovirtcred';
+export const SERVICE_NAME = 'gdm-ovirtcred';
const OVirtCredentialsIface = `
<node>
return self;
}
-var OVirtCredentialsManager = class OVirtCredentialsManager extends Credential.CredentialManager {
+class OVirtCredentialsManager extends Credential.CredentialManager {
constructor() {
super(SERVICE_NAME);
this._credentials = new OVirtCredentials();
this.token = token;
});
}
-};
+}
/**
* @returns {OVirtCredentialsManager}
*/
-function getOVirtCredentialsManager() {
+export function getOVirtCredentialsManager() {
if (!_oVirtCredentialsManager)
_oVirtCredentialsManager = new OVirtCredentialsManager();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Manager */
-const Gio = imports.gi.Gio;
-const Signals = imports.misc.signals;
+import Gio from 'gi://Gio';
+import * as Signals from '../misc/signals.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../misc/fileUtils.js';
const ProviderIface = loadInterfaceXML("org.freedesktop.realmd.Provider");
const Provider = Gio.DBusProxy.makeProxyWrapper(ProviderIface);
const RealmIface = loadInterfaceXML("org.freedesktop.realmd.Realm");
const Realm = Gio.DBusProxy.makeProxyWrapper(RealmIface);
-var Manager = class extends Signals.EventEmitter {
+export class Manager extends Signals.EventEmitter {
constructor() {
super();
this._realms = { };
this._updateLoginFormat();
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported BANNER_MESSAGE_KEY, BANNER_MESSAGE_TEXT_KEY, LOGO_KEY,
- DISABLE_USER_LIST_KEY, fadeInActor, fadeOutActor, cloneAndFadeOutActor,
- ShellUserVerifier */
-
-const Clutter = imports.gi.Clutter;
-const Gdm = imports.gi.Gdm;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const Signals = imports.misc.signals;
-
-const Batch = imports.gdm.batch;
-const OVirt = imports.gdm.oVirt;
-const Vmware = imports.gdm.vmware;
-const Main = imports.ui.main;
-const { loadInterfaceXML } = imports.misc.fileUtils;
-const Params = imports.misc.params;
-const SmartcardManager = imports.misc.smartcardManager;
+
+import Clutter from 'gi://Clutter';
+import Gdm from 'gi://Gdm';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import * as Signals from '../misc/signals.js';
+
+import * as Batch from './batch.js';
+import * as OVirt from './oVirt.js';
+import * as Vmware from './vmware.js';
+import * as Main from '../ui/main.js';
+import {loadInterfaceXML} from '../misc/fileUtils.js';
+import * as Params from '../misc/params.js';
+import * as SmartcardManager from '../misc/smartcardManager.js';
const FprintManagerIface = loadInterfaceXML('net.reactivated.Fprint.Manager');
const FprintManagerProxy = Gio.DBusProxy.makeProxyWrapper(FprintManagerIface);
'call_begin_verification_for_user');
Gio._promisify(Gdm.UserVerifierProxy.prototype, 'call_begin_verification');
-var PASSWORD_SERVICE_NAME = 'gdm-password';
-var FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint';
-var SMARTCARD_SERVICE_NAME = 'gdm-smartcard';
-var CLONE_FADE_ANIMATION_TIME = 250;
+export const PASSWORD_SERVICE_NAME = 'gdm-password';
+export const FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint';
+export const SMARTCARD_SERVICE_NAME = 'gdm-smartcard';
+const CLONE_FADE_ANIMATION_TIME = 250;
-var LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen';
-var PASSWORD_AUTHENTICATION_KEY = 'enable-password-authentication';
-var FINGERPRINT_AUTHENTICATION_KEY = 'enable-fingerprint-authentication';
-var SMARTCARD_AUTHENTICATION_KEY = 'enable-smartcard-authentication';
-var BANNER_MESSAGE_KEY = 'banner-message-enable';
-var BANNER_MESSAGE_TEXT_KEY = 'banner-message-text';
-var ALLOWED_FAILURES_KEY = 'allowed-failures';
+export const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen';
+export const PASSWORD_AUTHENTICATION_KEY = 'enable-password-authentication';
+export const FINGERPRINT_AUTHENTICATION_KEY = 'enable-fingerprint-authentication';
+export const SMARTCARD_AUTHENTICATION_KEY = 'enable-smartcard-authentication';
+export const BANNER_MESSAGE_KEY = 'banner-message-enable';
+export const BANNER_MESSAGE_TEXT_KEY = 'banner-message-text';
+export const ALLOWED_FAILURES_KEY = 'allowed-failures';
-var LOGO_KEY = 'logo';
-var DISABLE_USER_LIST_KEY = 'disable-user-list';
+export const LOGO_KEY = 'logo';
+export const DISABLE_USER_LIST_KEY = 'disable-user-list';
// Give user 48ms to read each character of a PAM message
-var USER_READ_TIME = 48;
+const USER_READ_TIME = 48;
const FINGERPRINT_ERROR_TIMEOUT_WAIT = 15;
/**
*
* @enum {number}
*/
-var MessageType = {
+export const MessageType = {
NONE: 0,
HINT: 1,
INFO: 2,
/**
* @param {Clutter.Actor} actor
*/
-function cloneAndFadeOutActor(actor) {
+export function cloneAndFadeOutActor(actor) {
// Immediately hide actor so its sibling can have its space
// and position, but leave a non-reactive clone on-screen,
// so from the user's point of view it smoothly fades away
return hold;
}
-var ShellUserVerifier = class extends Signals.EventEmitter {
+export class ShellUserVerifier extends Signals.EventEmitter {
constructor(client, params) {
super();
params = Params.parse(params, { reauthenticationOnly: false });
this._verificationFailed(serviceName, true);
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported getVmwareCredentialsManager */
-const Gio = imports.gi.Gio;
-const Credential = imports.gdm.credentialManager;
+import Gio from 'gi://Gio';
+import * as Credential from './credentialManager.js';
const dbusPath = '/org/vmware/viewagent/Credentials';
const dbusInterface = 'org.vmware.viewagent.Credentials';
-var SERVICE_NAME = 'gdm-vmwcred';
+export const SERVICE_NAME = 'gdm-vmwcred';
const VmwareCredentialsIface = `<node>
<interface name="${dbusInterface}">
return self;
}
-var VmwareCredentialsManager = class VmwareCredentialsManager extends Credential.CredentialManager {
+class VmwareCredentialsManager extends Credential.CredentialManager {
constructor() {
super(SERVICE_NAME);
this._credentials = new VmwareCredentials();
this.token = token;
});
}
-};
+}
/**
* @returns {VmwareCredentialsManager}
*/
-function getVmwareCredentialsManager() {
+export function getVmwareCredentialsManager() {
if (!_vmwareCredentialsManager)
_vmwareCredentialsManager = new VmwareCredentialsManager();
--- /dev/null
+overrides:
+ - files:
+ - dbusUtils.js
+ parserOptions:
+ sourceType: script
\ No newline at end of file
-/* exported adjustAnimationTime, ensureActorVisibleInScrollView, wiggle */
+import St from 'gi://St';
+import Clutter from 'gi://Clutter';
-const St = imports.gi.St;
-const Clutter = imports.gi.Clutter;
+import * as Params from './params.js';
-const Params = imports.misc.params;
-
-var SCROLL_TIME = 100;
+const SCROLL_TIME = 100;
const WIGGLE_OFFSET = 6;
const WIGGLE_DURATION = 65;
* Adjust `msecs` to account for St's enable-animations
* and slow-down-factor settings
*/
-function adjustAnimationTime(msecs) {
+export function adjustAnimationTime(msecs) {
const settings = St.Settings.get();
if (!settings.enable_animations)
* @param {St.ScrollView} scrollView - the scroll view the actor is in
* @param {Clutter.Actor} actor - the actor
*/
-function ensureActorVisibleInScrollView(scrollView, actor) {
+export function ensureActorVisibleInScrollView(scrollView, actor) {
const {adjustment} = scrollView.vscroll;
let [value, lower_, upper, stepIncrement_, pageIncrement_, pageSize] = adjustment.get_values();
* @param {number} params.duration - the amount of time to move the actor per-wiggle
* @param {number} params.wiggleCount - the number of times to wiggle the actor
*/
-function wiggle(actor, params) {
+export function wiggle(actor, params) {
if (!St.Settings.get().enable_animations)
return;
-/* exported formatDateWithCFormatString, formatTime, formatTimeSpan, clearCachedLocalTimeZone */
+import * as System from 'system';
+import * as Gettext from 'gettext';
+import GLib from 'gi://GLib';
+import Gio from 'gi://Gio';
+import Shell from 'gi://Shell';
-const System = imports.system;
-const Gettext = imports.gettext;
-const GLib = imports.gi.GLib;
-const Gio = imports.gi.Gio;
-const Shell = imports.gi.Shell;
-const Params = imports.misc.params;
+import * as Params from './params.js';
let _desktopSettings = null;
let _localTimeZone = null;
* @param {string} format a format String for the date
* @returns {string}
*/
-function formatDateWithCFormatString(date, format) {
+export function formatDateWithCFormatString(date, format) {
const dt = _convertJSDateToGLibDateTime(date);
return dt?.format(format) ?? '';
* @param {Date} date the start of the time span
* @returns {string}
*/
-function formatTimeSpan(date) {
+export function formatTimeSpan(date) {
if (_localTimeZone === null)
_localTimeZone = GLib.TimeZone.new_local();
* @param {boolean=} params.ampm whether to include the "am" or "pm" in the string
* @returns {string}
*/
-function formatTime(time, params) {
+export function formatTime(time, params) {
let date;
// HACK: The built-in Date type sucks at timezones, which we need for the
// world clock; it's often more convenient though, so allow either
* Update the timezone used by JavaScript Date objects and other
* date utilities
*/
-function clearCachedLocalTimeZone() {
+export function clearCachedLocalTimeZone() {
// SpiderMonkey caches the time zone so we must explicitly clear it
// before we can update the calendar, see
// https://bugzilla.gnome.org/show_bug.cgi?id=678507
-// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported loadInterfaceXML, loadSubInterfaceXML */
const Config = imports.misc.config;
-/* exported ExtensionState, ExtensionType,
- * serializeExtension, deserializeExtension */
-
// Common utils for the extension system, the extensions D-Bus service
// and the Extensions app
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
-var ExtensionType = {
+export const ExtensionType = {
SYSTEM: 1,
PER_USER: 2,
};
/**
* @enum {number}
*/
-var ExtensionState = {
+export const ExtensionState = {
ENABLED: 1,
DISABLED: 2,
ERROR: 3,
* @param {object} extension - an extension object
* @returns {object}
*/
-function serializeExtension(extension) {
+export function serializeExtension(extension) {
let obj = {...extension.metadata};
SERIALIZED_PROPERTIES.forEach(prop => {
* @param {object} variant - an unpacked {GLib.Variant}
* @returns {object}
*/
-function deserializeExtension(variant) {
+export function deserializeExtension(variant) {
let res = {metadata: {}};
for (let prop in variant) {
let val = variant[prop].unpack();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported collectFromDatadirs, recursivelyDeleteDir,
- recursivelyMoveDir, loadInterfaceXML, loadSubInterfaceXML */
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
+import GLib from 'gi://GLib';
+import Gio from 'gi://Gio';
-var { loadInterfaceXML } = imports.misc.dbusUtils;
+export const {loadInterfaceXML} = imports.misc.dbusUtils;
/**
* @typedef {object} SubdirInfo
* @returns {Generator<SubdirInfo, void, void>} a generator which yields file info for subdirectories named
* `subdir` within data directories
*/
-function* collectFromDatadirs(subdir, includeUserDir) {
+export function* collectFromDatadirs(subdir, includeUserDir) {
let dataDirs = GLib.get_system_data_dirs();
if (includeUserDir)
dataDirs.unshift(GLib.get_user_data_dir());
* @param {Gio.File} dir
* @param {boolean} deleteParent
*/
-function recursivelyDeleteDir(dir, deleteParent) {
+export function recursivelyDeleteDir(dir, deleteParent) {
let children = dir.enumerate_children('standard::name,standard::type',
Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null);
* @param {Gio.File} srcDir
* @param {Gio.File} destDir
*/
-function recursivelyMoveDir(srcDir, destDir) {
+export function recursivelyMoveDir(srcDir, destDir) {
let children = srcDir.enumerate_children('standard::name,standard::type',
Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null);
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported PresenceStatus, Presence, Inhibitor, SessionManager, InhibitFlags */
-const Gio = imports.gi.Gio;
+import Gio from 'gi://Gio';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from './fileUtils.js';
const PresenceIface = loadInterfaceXML('org.gnome.SessionManager.Presence');
/** @enum {number} */
-var PresenceStatus = {
+export const PresenceStatus = {
AVAILABLE: 0,
INVISIBLE: 1,
BUSY: 2,
IDLE: 3,
};
-var PresenceProxy = Gio.DBusProxy.makeProxyWrapper(PresenceIface);
+const PresenceProxy = Gio.DBusProxy.makeProxyWrapper(PresenceIface);
/**
* @param {Function} initCallback
* @param {Gio.Cancellable} cancellable
* @returns {Gio.DBusProxy}
*/
-function Presence(initCallback, cancellable) {
+export function Presence(initCallback, cancellable) {
return new PresenceProxy(Gio.DBus.session, 'org.gnome.SessionManager',
'/org/gnome/SessionManager/Presence', initCallback, cancellable);
}
// change at runtime (changes always come in the form
// of new inhibitors)
const InhibitorIface = loadInterfaceXML('org.gnome.SessionManager.Inhibitor');
-var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);
+const InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);
/**
* @param {string} objectPath
* @param {Gio.Cancellable} cancellable
* @returns {Gio.DBusProxy}
*/
-function Inhibitor(objectPath, initCallback, cancellable) {
+export function Inhibitor(objectPath, initCallback, cancellable) {
return new InhibitorProxy(Gio.DBus.session, 'org.gnome.SessionManager', objectPath, initCallback, cancellable);
}
// Not the full interface, only the methods we use
const SessionManagerIface = loadInterfaceXML('org.gnome.SessionManager');
-var SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface);
+const SessionManagerProxy = Gio.DBusProxy.makeProxyWrapper(SessionManagerIface);
/**
* @param {Function} initCallback
* @param {Gio.Cancellable} cancellable
* @returns {Gio.DBusProxy}
*/
-function SessionManager(initCallback, cancellable) {
+export function SessionManager(initCallback, cancellable) {
return new SessionManagerProxy(Gio.DBus.session, 'org.gnome.SessionManager', '/org/gnome/SessionManager', initCallback, cancellable);
}
-var InhibitFlags = {
+export const InhibitFlags = {
LOGOUT: 1 << 0,
SWITCH: 1 << 1,
SUSPEND: 1 << 2,
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported HistoryManager */
-const Signals = imports.misc.signals;
-const Clutter = imports.gi.Clutter;
-const Params = imports.misc.params;
+import * as Signals from './signals.js';
+import Clutter from 'gi://Clutter';
+import * as Params from './params.js';
-var DEFAULT_LIMIT = 512;
+const DEFAULT_LIMIT = 512;
-var HistoryManager = class extends Signals.EventEmitter {
+export class HistoryManager extends Signals.EventEmitter {
constructor(params) {
super();
if (this._key)
global.settings.set_strv(this._key, this._history);
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported getIBusManager */
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const IBus = imports.gi.IBus;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const Signals = imports.misc.signals;
-const BoxPointer = imports.ui.boxpointer;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import IBus from 'gi://IBus';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
-const IBusCandidatePopup = imports.ui.ibusCandidatePopup;
+import * as Signals from './signals.js';
+import * as BoxPointer from '../ui/boxpointer.js';
+
+import * as IBusCandidatePopup from '../ui/ibusCandidatePopup.js';
Gio._promisify(IBus.Bus.prototype,
'list_engines_async', 'list_engines_async_finish');
/**
* @returns {IBusManager}
*/
-function getIBusManager() {
+export function getIBusManager() {
if (_ibusManager == null)
_ibusManager = new IBusManager();
return _ibusManager;
}
-var IBusManager = class extends Signals.EventEmitter {
+class IBusManager extends Signals.EventEmitter {
constructor() {
super();
}
return true;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported InputMethod */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const IBus = imports.gi.IBus;
-const Keyboard = imports.ui.status.keyboard;
-const Main = imports.ui.main;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import IBus from 'gi://IBus';
+
+import * as Keyboard from '../ui/status/keyboard.js';
+import * as Main from '../ui/main.js';
Gio._promisify(IBus.Bus.prototype,
'create_input_context_async', 'create_input_context_async_finish');
Gio._promisify(IBus.InputContext.prototype,
'process_key_event_async', 'process_key_event_async_finish');
-var HIDE_PANEL_TIME = 50;
+const HIDE_PANEL_TIME = 50;
-var InputMethod = GObject.registerClass({
+export const InputMethod = GObject.registerClass({
Signals: {
'surrounding-text-set': {},
'terminal-mode-changed': {},
-/* exported IntrospectService */
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
const APP_ALLOWLIST = [
'org.freedesktop.impl.portal.desktop.gtk',
const INTROSPECT_DBUS_API_VERSION = 3;
-const { loadInterfaceXML } = imports.misc.fileUtils;
-const { DBusSenderChecker } = imports.misc.util;
+import {loadInterfaceXML} from './fileUtils.js';
+import {DBusSenderChecker} from './util.js';
const IntrospectDBusIface = loadInterfaceXML('org.gnome.Shell.Introspect');
-var IntrospectService = class {
+export class IntrospectService {
constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(IntrospectDBusIface,
this);
get version() {
return INTROSPECT_DBUS_API_VERSION;
}
-};
+}
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
-/* exported getCompletions, getCommonPrefix, getDeclaredConstants */
const AsyncFunction = async function () {}.constructor;
* @param {string} commandHeader
* @param {readonly string[]} [globalCompletionList]
*/
-async function getCompletions(text, commandHeader, globalCompletionList) {
+export async function getCompletions(text, commandHeader, globalCompletionList) {
let methods = [];
let expr_, base;
let attrHead = '';
* @param {string} expr
* @param {number} offset
*/
-function findMatchingQuote(expr, offset) {
+export function findMatchingQuote(expr, offset) {
let quoteChar = expr.charAt(offset);
for (let i = offset - 1; i >= 0; --i) {
if (expr.charAt(i) == quoteChar && expr.charAt(i - 1) != '\\')
* @param {string} expr
* @param {number} offset
*/
-function findMatchingSlash(expr, offset) {
+export function findMatchingSlash(expr, offset) {
for (let i = offset - 1; i >= 0; --i) {
if (expr.charAt(i) == '/' && expr.charAt(i - 1) != '\\')
return i;
* @param {string} expr
* @param {number} offset
*/
-function findMatchingBrace(expr, offset) {
+export function findMatchingBrace(expr, offset) {
let closeBrace = expr.charAt(offset);
let openBrace = { ')': '(', ']': '[' }[closeBrace];
* @param {...any} braces
* @returns {number}
*/
-function findTheBrace(expr, offset, ...braces) {
+export function findTheBrace(expr, offset, ...braces) {
let [openBrace, closeBrace] = braces;
if (offset < 0)
* @param {string} expr
* @param {number} offset
*/
-function getExpressionOffset(expr, offset) {
+export function getExpressionOffset(expr, offset) {
while (offset >= 0) {
let currChar = expr.charAt(offset);
*
* @param {object} obj
*/
-function getAllProps(obj) {
+export function getAllProps(obj) {
if (obj === null || obj === undefined)
return [];
* @param {string} expr
* @param {string=} commandHeader
*/
-async function getPropertyNamesFromExpression(expr, commandHeader = '') {
+export async function getPropertyNamesFromExpression(expr, commandHeader = '') {
let obj = {};
if (!isUnsafeExpression(expr)) {
try {
*
* @param {readonly string[]} words
*/
-function getCommonPrefix(words) {
+export function getCommonPrefix(words) {
let word = words[0];
for (let i = 0; i < word.length; i++) {
for (let w = 1; w < words.length; w++) {
*
* @param {string} str
*/
-function removeLiterals(str) {
+export function removeLiterals(str) {
if (str.length == 0)
return '';
*
* @param {string} str
*/
-function isUnsafeExpression(str) {
+export function isUnsafeExpression(str) {
// Check for any sort of assignment
// The strategy used is dumb: remove any quotes
// or regexs and comparison operators and see if there is an '=' character.
*
* @param {string} str
*/
-function getDeclaredConstants(str) {
+export function getDeclaredConstants(str) {
let ret = [];
str.split(';').forEach(s => {
let base_, keyword;
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported getKeyboardManager, holdKeyboard, releaseKeyboard */
-const GLib = imports.gi.GLib;
-const GnomeDesktop = imports.gi.GnomeDesktop;
+import GLib from 'gi://GLib';
+import GnomeDesktop from 'gi://GnomeDesktop';
-const Main = imports.ui.main;
+import * as Main from '../ui/main.js';
-var DEFAULT_LOCALE = 'en_US';
-var DEFAULT_LAYOUT = 'us';
-var DEFAULT_VARIANT = '';
+export const DEFAULT_LOCALE = 'en_US';
+export const DEFAULT_LAYOUT = 'us';
+export const DEFAULT_VARIANT = '';
let _xkbInfo = null;
/**
* @returns {GnomeDesktop.XkbInfo}
*/
-function getXkbInfo() {
+export function getXkbInfo() {
if (_xkbInfo == null)
_xkbInfo = new GnomeDesktop.XkbInfo();
return _xkbInfo;
/**
* @returns {KeyboardManager}
*/
-function getKeyboardManager() {
+export function getKeyboardManager() {
if (_keyboardManager == null)
_keyboardManager = new KeyboardManager();
return _keyboardManager;
}
-function releaseKeyboard() {
+export function releaseKeyboard() {
if (Main.modalCount > 0)
global.display.unfreeze_keyboard(global.get_current_time());
else
global.display.ungrab_keyboard(global.get_current_time());
}
-function holdKeyboard() {
+export function holdKeyboard() {
global.display.freeze_keyboard(global.get_current_time());
}
-var KeyboardManager = class {
+class KeyboardManager {
constructor() {
// The XKB protocol doesn't allow for more that 4 layouts in a
// keymap. Wayland doesn't impose this limit and libxkbcommon can
get currentLayout() {
return this._current;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported canLock, getLoginManager, registerSessionWithGDM */
-const GLib = imports.gi.GLib;
-const Gio = imports.gi.Gio;
-const Signals = imports.misc.signals;
+import GLib from 'gi://GLib';
+import Gio from 'gi://Gio';
+import * as Signals from './signals.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from './fileUtils.js';
const SystemdLoginManagerIface = loadInterfaceXML('org.freedesktop.login1.Manager');
const SystemdLoginSessionIface = loadInterfaceXML('org.freedesktop.login1.Session');
/**
* @returns {boolean}
*/
-function canLock() {
+export function canLock() {
try {
let params = GLib.Variant.new('(ss)', ['org.gnome.DisplayManager.Manager', 'Version']);
let result = Gio.DBus.system.call_sync('org.gnome.DisplayManager',
}
}
-
-async function registerSessionWithGDM() {
+export async function registerSessionWithGDM() {
log("Registering session with GDM");
try {
await Gio.DBus.system.call(
* An abstraction over systemd/logind and ConsoleKit.
* @returns {LoginManagerSystemd | LoginManagerDummy} - the LoginManager singleton
*/
-function getLoginManager() {
+export function getLoginManager() {
if (_loginManager == null) {
if (haveSystemd())
_loginManager = new LoginManagerSystemd();
return _loginManager;
}
-var LoginManagerSystemd = class extends Signals.EventEmitter {
+class LoginManagerSystemd extends Signals.EventEmitter {
constructor() {
super();
_prepareForSleep(proxy, sender, [aboutToSuspend]) {
this.emit('prepare-for-sleep', aboutToSuspend);
}
-};
+}
-var LoginManagerDummy = class extends Signals.EventEmitter {
+class LoginManagerDummy extends Signals.EventEmitter {
getCurrentSessionProxy() {
// we could return a DummySession object that fakes whatever callers
// expect (at the time of writing: connect() and connectSignal()
async inhibit() {
return null;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ModemBase, ModemGsm, ModemCdma, BroadbandModem */
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const NM = imports.gi.NM;
-const NMA4 = imports.gi.NMA4;
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import NM from 'gi://NM';
+import NMA4 from 'gi://NMA4';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from './fileUtils.js';
let _mpd;
const ModemCdmaInterface = loadInterfaceXML('org.freedesktop.ModemManager.Modem.Cdma');
const ModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(ModemCdmaInterface);
-var ModemBase = GObject.registerClass({
+const ModemBase = GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
Properties: {
'operator-name': GObject.ParamSpec.string(
}
});
-var ModemGsm = GObject.registerClass(
+export const ModemGsm = GObject.registerClass(
class ModemGsm extends ModemBase {
_init(path) {
super._init();
}
});
-var ModemCdma = GObject.registerClass(
+export const ModemCdma = GObject.registerClass(
class ModemCdma extends ModemBase {
_init(path) {
super._init();
const BroadbandModemCdmaInterface = loadInterfaceXML('org.freedesktop.ModemManager1.Modem.ModemCdma');
const BroadbandModemCdmaProxy = Gio.DBusProxy.makeProxyWrapper(BroadbandModemCdmaInterface);
-var BroadbandModem = GObject.registerClass({
+export const BroadbandModem = GObject.registerClass({
Properties: {
'capabilities': GObject.ParamSpec.flags(
'capabilities', 'capabilities', 'capabilities',
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ObjectManager */
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const Params = imports.misc.params;
-const Signals = imports.misc.signals;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import * as Params from './params.js';
+import * as Signals from './signals.js';
// Specified in the D-Bus specification here:
// http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager
const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface);
-var ObjectManager = class extends Signals.EventEmitter {
+export class ObjectManager extends Signals.EventEmitter {
constructor(params) {
super();
return proxies;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported parse */
/**
* parse:
* @returns a new object, containing the merged parameters from
* `params` and `defaults`
*/
-function parse(params = {}, defaults, allowExtras) {
+export function parse(params = {}, defaults, allowExtras) {
if (!allowExtras) {
for (let prop in params) {
if (!(prop in defaults))
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-/* exported getDefault */
-
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
// We require libmalcontent ≥ 0.6.0
const HAVE_MALCONTENT = imports.package.checkSymbol(
'Malcontent', '0', 'ManagerGetValueFlags');
-var Malcontent = null;
+let Malcontent = null;
if (HAVE_MALCONTENT) {
- Malcontent = imports.gi.Malcontent;
+ ({default: Malcontent} = await import('gi://Malcontent?version=0'));
Gio._promisify(Malcontent.Manager.prototype, 'get_app_filter_async');
}
/**
* @returns {ParentalControlsManager}
*/
-function getDefault() {
+export function getDefault() {
if (_singleton === null)
_singleton = new ParentalControlsManager();
// parental controls settings. It’s possible for the user’s parental controls
// to change at runtime if the Parental Controls application is used by an
// administrator from within the user’s session.
-var ParentalControlsManager = GObject.registerClass({
+const ParentalControlsManager = GObject.registerClass({
Signals: {
'app-filter-changed': {},
},
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported PermissionStore */
-const Gio = imports.gi.Gio;
+import Gio from 'gi://Gio';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from './fileUtils.js';
const PermissionStoreIface = loadInterfaceXML('org.freedesktop.impl.portal.PermissionStore');
const PermissionStoreProxy = Gio.DBusProxy.makeProxyWrapper(PermissionStoreIface);
* @param {Gio.Cancellable} cancellable
* @returns {Gio.DBusProxy}
*/
-function PermissionStore(initCallback, cancellable) {
+export function PermissionStore(initCallback, cancellable) {
return new PermissionStoreProxy(Gio.DBus.session,
'org.freedesktop.impl.portal.PermissionStore',
'/org/freedesktop/impl/portal/PermissionStore',
-/* exported TransientSignalHolder, connectObject, disconnectObject */
-const GObject = imports.gi.GObject;
+import GObject from 'gi://GObject';
const destroyableTypes = [];
return destroyableTypes.some(type => obj instanceof type);
}
-var TransientSignalHolder = GObject.registerClass(
+export const TransientSignalHolder = GObject.registerClass(
class TransientSignalHolder extends GObject.Object {
static [GObject.signals] = {
'destroy': {},
* with an optional flags value, followed by an object to track
* @returns {void}
*/
-function connectObject(thisObj, ...args) {
+export function connectObject(thisObj, ...args) {
const getParams = argArray => {
const [signalName, handler, arg, ...rest] = argArray;
if (typeof arg !== 'number')
* @param {Object} obj - the tracked object
* @returns {void}
*/
-function disconnectObject(thisObj, obj) {
+export function disconnectObject(thisObj, obj) {
SignalManager.getDefault().maybeGetSignalTracker(thisObj)?.untrack(obj);
}
*
* @param {GObject.Type} gtype - a GObject type
*/
-function registerDestroyableType(gtype) {
+export function registerDestroyableType(gtype) {
if (!GObject.type_is_a(gtype, GObject.Object))
throw new Error(`${gtype} is not a GObject subclass`);
+import * as SignalTracker from './signalTracker.js';
+
const Signals = imports.signals;
-const SignalTracker = imports.misc.signalTracker;
-var EventEmitter = class EventEmitter {
+export class EventEmitter {
connectObject(...args) {
return SignalTracker.connectObject(this, ...args);
}
disconnect_object(...args) {
return this.disconnectObject(...args);
}
-};
+}
Signals.addSignalMethods(EventEmitter.prototype);
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported getSmartcardManager */
-const Gio = imports.gi.Gio;
-const Signals = imports.misc.signals;
+import Gio from 'gi://Gio';
+import * as Signals from './signals.js';
-const ObjectManager = imports.misc.objectManager;
+import * as ObjectManager from './objectManager.js';
const SmartcardTokenIface = `
<node>
/**
* @returns {SmartcardManager}
*/
-function getSmartcardManager() {
+export function getSmartcardManager() {
if (_smartcardManager == null)
_smartcardManager = new SmartcardManager();
return _smartcardManager;
}
-var SmartcardManager = class extends Signals.EventEmitter {
+class SmartcardManager extends Signals.EventEmitter {
constructor() {
super();
return true;
}
-};
+}
-/* exported getDefault */
-const AccountsService = imports.gi.AccountsService;
-const Clutter = imports.gi.Clutter;
-const Gdm = imports.gi.Gdm;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-
-const GnomeSession = imports.misc.gnomeSession;
-const LoginManager = imports.misc.loginManager;
-const Main = imports.ui.main;
-const Screenshot = imports.ui.screenshot;
+import AccountsService from 'gi://AccountsService';
+import Clutter from 'gi://Clutter';
+import Gdm from 'gi://Gdm';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+
+import * as GnomeSession from './gnomeSession.js';
+import * as LoginManager from './loginManager.js';
+import * as Main from '../ui/main.js';
+import * as Screenshot from '../ui/screenshot.js';
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen';
/**
* @returns {SystemActions}
*/
-function getDefault() {
+export function getDefault() {
if (_singleton == null)
_singleton = new SystemActions();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported findUrls, spawn, spawnCommandLine, spawnApp, trySpawnCommandLine,
- createTimeLabel, insertSorted, lerp, GNOMEversionCompare,
- DBusSenderChecker, Highlighter */
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const GnomeDesktop = imports.gi.GnomeDesktop;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import GnomeDesktop from 'gi://GnomeDesktop';
-const Main = imports.ui.main;
-const {formatTime} = imports.misc.dateUtils;
+import * as Main from '../ui/main.js';
+import {formatTime} from './dateUtils.js';
// http://daringfireball.net/2010/07/improved_regex_for_matching_urls
const _balancedParens = '\\([^\\s()<>]+\\)';
*
* @returns {{url: string, pos: number}[]} the list of match objects, as described above
*/
-function findUrls(str) {
+export function findUrls(str) {
let res = [], match;
while ((match = _urlRegexp.exec(str)))
res.push({ url: match[2], pos: match.index + match[1].length });
*
* @param {readonly string[]} argv an argv array
*/
-function spawn(argv) {
+export function spawn(argv) {
try {
trySpawn(argv);
} catch (err) {
* Runs commandLine in the background, handling any errors that
* occur when trying to parse or start the program.
*/
-function spawnCommandLine(commandLine) {
+export function spawnCommandLine(commandLine) {
try {
let [success_, argv] = GLib.shell_parse_argv(commandLine);
trySpawn(argv);
*
* Runs argv as if it was an application, handling startup notification
*/
-function spawnApp(argv) {
+export function spawnApp(argv) {
try {
let app = Gio.AppInfo.create_from_commandline(argv.join(' '), null,
Gio.AppInfoCreateFlags.SUPPORTS_STARTUP_NOTIFICATION);
* Runs commandLine in the background. If launching commandLine
* fails, this will throw an error.
*/
-function trySpawnCommandLine(commandLine) {
+export function trySpawnCommandLine(commandLine) {
let success_, argv;
try {
* @param {object} params params for {@link formatTime}
* @returns {St.Label}
*/
-function createTimeLabel(date, params) {
+export function createTimeLabel(date, params) {
if (_desktopSettings == null)
_desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
*
* Returns the position at which it was inserted
*/
-function insertSorted(array, val, cmp) {
+export function insertSorted(array, val, cmp) {
let pos = lowerBound(array, val, cmp);
array.splice(pos, 0, val);
* @param {number} progress
* @returns {number}
*/
-function lerp(start, end, progress) {
+export function lerp(start, end, progress) {
return start + progress * (end - start);
}
* Returns an integer less than, equal to, or greater than
* zero, if `version1` is older, equal or newer than `version2`
*/
-function GNOMEversionCompare(version1, version2) {
+export function GNOMEversionCompare(version1, version2) {
const v1Array = version1.split('.');
const v2Array = version2.split('.');
return 0;
}
-var DBusSenderChecker = class {
+export class DBusSenderChecker {
/**
* @param {string[]} allowList - list of allowed well-known names
*/
Gio.DBus.unwatch_name(id);
this._watchList = [];
}
-};
+}
/* @class Highlighter Highlight given terms in text using markup. */
-var Highlighter = class {
+export class Highlighter {
/**
* @param {?string[]} terms - list of terms to highlight
*/
return escaped.join('');
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported WeatherClient */
-const Geoclue = imports.gi.Geoclue;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GWeather = imports.gi.GWeather;
-const Shell = imports.gi.Shell;
-const Signals = imports.misc.signals;
+import Geoclue from 'gi://Geoclue';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GWeather from 'gi://GWeather';
+import Shell from 'gi://Shell';
+import * as Signals from './signals.js';
-const PermissionStore = imports.misc.permissionStore;
+import * as PermissionStore from './permissionStore.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from './fileUtils.js';
Gio._promisify(Geoclue.Simple, 'new');
const WEATHER_APP_ID = 'org.gnome.Weather.desktop';
// Minimum time between updates to show loading indication
-var UPDATE_THRESHOLD = 10 * GLib.TIME_SPAN_MINUTE;
+const UPDATE_THRESHOLD = 10 * GLib.TIME_SPAN_MINUTE;
-var WeatherClient = class extends Signals.EventEmitter {
+export class WeatherClient extends Signals.EventEmitter {
constructor() {
super();
this._updateAutoLocation();
}
-};
+}
const _ = Gettext.gettext;
const Config = imports.misc.config;
-const {loadInterfaceXML} = imports.misc.fileUtils;
+import {loadInterfaceXML} from './fileUtils.js';
const PortalHelperResult = {
CANCELLED: 0,
const HelperDBusInterface = loadInterfaceXML('org.gnome.Shell.PortalHelper');
-var PortalSecurityButton = GObject.registerClass(
+const PortalSecurityButton = GObject.registerClass(
class PortalSecurityButton extends Gtk.MenuButton {
_init() {
const popover = new Gtk.Popover();
}
});
-var PortalWindow = GObject.registerClass(
+const PortalWindow = GObject.registerClass(
class PortalWindow extends Gtk.ApplicationWindow {
_init(application, url, timestamp, doneCallback) {
super._init({
}
});
-var WebPortalHelper = GObject.registerClass(
+const WebPortalHelper = GObject.registerClass(
class WebPortalHelper extends Adw.Application {
_init() {
super._init({
-/* exported AccessDialogDBus */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const CheckBox = imports.ui.checkBox;
-const Dialog = imports.ui.dialog;
-const ModalDialog = imports.ui.modalDialog;
+import * as CheckBox from './checkBox.js';
+import * as Dialog from './dialog.js';
+import * as ModalDialog from './modalDialog.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../misc/fileUtils.js';
const RequestIface = loadInterfaceXML('org.freedesktop.impl.portal.Request');
const AccessIface = loadInterfaceXML('org.freedesktop.impl.portal.Access');
/** @enum {number} */
-var DialogResponse = {
+const DialogResponse = {
OK: 0,
CANCEL: 1,
CLOSED: 2,
};
-var AccessDialog = GObject.registerClass(
+const AccessDialog = GObject.registerClass(
class AccessDialog extends ModalDialog.ModalDialog {
_init(invocation, handle, title, description, body, options) {
super._init({ styleClass: 'access-dialog' });
}
});
-var AccessDialogDBus = class {
+export class AccessDialogDBus {
constructor() {
this._accessDialog = null;
this._accessDialog = dialog;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported AppSwitcherPopup, GroupCyclerPopup, WindowSwitcherPopup,
- WindowCyclerPopup */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import St from 'gi://St';
+import Shell from 'gi://Shell';
-const Main = imports.ui.main;
-const SwitcherPopup = imports.ui.switcherPopup;
+import * as Main from './main.js';
+import * as SwitcherPopup from './switcherPopup.js';
-var APP_ICON_HOVER_TIMEOUT = 200; // milliseconds
+const APP_ICON_HOVER_TIMEOUT = 200; // milliseconds
-var THUMBNAIL_DEFAULT_SIZE = 256;
-var THUMBNAIL_POPUP_TIME = 500; // milliseconds
-var THUMBNAIL_FADE_TIME = 100; // milliseconds
+const THUMBNAIL_DEFAULT_SIZE = 256;
+const THUMBNAIL_POPUP_TIME = 500; // milliseconds
+const THUMBNAIL_FADE_TIME = 100; // milliseconds
-var WINDOW_PREVIEW_SIZE = 128;
-var APP_ICON_SIZE = 96;
-var APP_ICON_SIZE_SMALL = 48;
+const WINDOW_PREVIEW_SIZE = 128;
+const APP_ICON_SIZE = 96;
+const APP_ICON_SIZE_SMALL = 48;
const baseIconSizes = [96, 64, 48, 32, 22];
/** @enum {number} */
-var AppIconMode = {
+const AppIconMode = {
THUMBNAIL_ONLY: 1,
APP_ICON_ONLY: 2,
BOTH: 3,
});
}
+/**
+ * @param {Meta.Workspace} workspace
+ * @returns {Meta.Window}
+ */
function getWindows(workspace) {
// We ignore skip-taskbar windows in switchers, but if they are attached
// to their parent, their position in the MRU list may be more appropriate
// than the parent; so start with the complete list ...
- let windows = global.display.get_tab_list(Meta.TabList.NORMAL_ALL,
- workspace);
+ let windows = global.display.get_tab_list(Meta.TabList.NORMAL_ALL, workspace);
// ... map windows to their parent where appropriate ...
return windows.map(w => {
return w.is_attached_dialog() ? w.get_transient_for() : w;
// ... and filter out skip-taskbar windows and duplicates
- }).filter((w, i, a) => !w.skip_taskbar && a.indexOf(w) == i);
+ }).filter((w, i, a) => !w.skip_taskbar && a.indexOf(w) === i);
}
-var AppSwitcherPopup = GObject.registerClass(
+export const AppSwitcherPopup = GObject.registerClass(
class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
_init() {
super._init();
}
});
-var CyclerHighlight = GObject.registerClass(
+const CyclerHighlight = GObject.registerClass(
class CyclerHighlight extends St.Widget {
_init() {
super._init({ layout_manager: new Clutter.BinLayout() });
// We don't show an actual popup, so just provide what SwitcherPopup
// expects instead of inheriting from SwitcherList
-var CyclerList = GObject.registerClass({
+const CyclerList = GObject.registerClass({
Signals: {
'item-activated': { param_types: [GObject.TYPE_INT] },
'item-entered': { param_types: [GObject.TYPE_INT] },
}
});
-var CyclerPopup = GObject.registerClass({
+const CyclerPopup = GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
}, class CyclerPopup extends SwitcherPopup.SwitcherPopup {
_init() {
});
-var GroupCyclerPopup = GObject.registerClass(
+export const GroupCyclerPopup = GObject.registerClass(
class GroupCyclerPopup extends CyclerPopup {
_init() {
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.app-switcher' });
}
});
-var WindowSwitcherPopup = GObject.registerClass(
+export const WindowSwitcherPopup = GObject.registerClass(
class WindowSwitcherPopup extends SwitcherPopup.SwitcherPopup {
_init() {
super._init();
}
});
-var WindowCyclerPopup = GObject.registerClass(
+export const WindowCyclerPopup = GObject.registerClass(
class WindowCyclerPopup extends CyclerPopup {
_init() {
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' });
}
});
-var AppIcon = GObject.registerClass(
+export const AppIcon = GObject.registerClass(
class AppIcon extends St.BoxLayout {
_init(app) {
super._init({
}
});
-var AppSwitcher = GObject.registerClass(
+const AppSwitcher = GObject.registerClass(
class AppSwitcher extends SwitcherPopup.SwitcherList {
_init(apps, altTabPopup) {
super._init(true);
}
});
-var ThumbnailSwitcher = GObject.registerClass(
+const ThumbnailSwitcher = GObject.registerClass(
class ThumbnailSwitcher extends SwitcherPopup.SwitcherList {
_init(windows) {
super._init(false);
}
});
-var WindowIcon = GObject.registerClass(
+export const WindowIcon = GObject.registerClass(
class WindowIcon extends St.BoxLayout {
_init(window, mode) {
super._init({
}
});
-var WindowSwitcher = GObject.registerClass(
+const WindowSwitcher = GObject.registerClass(
class WindowSwitcher extends SwitcherPopup.SwitcherList {
_init(windows, mode) {
super._init(true);
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Animation, AnimatedIcon, Spinner */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Gio = imports.gi.Gio;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Gio from 'gi://Gio';
+import St from 'gi://St';
-const Params = imports.misc.params;
+import * as Params from '../misc/params.js';
-var ANIMATED_ICON_UPDATE_TIMEOUT = 16;
-var SPINNER_ANIMATION_TIME = 300;
-var SPINNER_ANIMATION_DELAY = 1000;
+const ANIMATED_ICON_UPDATE_TIMEOUT = 16;
+const SPINNER_ANIMATION_TIME = 300;
+const SPINNER_ANIMATION_DELAY = 1000;
-var Animation = GObject.registerClass(
+export const Animation = GObject.registerClass(
class Animation extends St.Bin {
_init(file, width, height, speed) {
const themeContext = St.ThemeContext.get_for_stage(global.stage);
}
});
-var AnimatedIcon = GObject.registerClass(
+export const AnimatedIcon = GObject.registerClass(
class AnimatedIcon extends Animation {
_init(file, size) {
super._init(file, size, size, ANIMATED_ICON_UPDATE_TIMEOUT);
}
});
-var Spinner = GObject.registerClass(
+export const Spinner = GObject.registerClass(
class Spinner extends AnimatedIcon {
_init(size, params) {
params = Params.parse(params, {
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported AppDisplay, AppSearchProvider */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Graphene = imports.gi.Graphene;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const AppFavorites = imports.ui.appFavorites;
-const { AppMenu } = imports.ui.appMenu;
-const BoxPointer = imports.ui.boxpointer;
-const DND = imports.ui.dnd;
-const GrabHelper = imports.ui.grabHelper;
-const IconGrid = imports.ui.iconGrid;
-const Layout = imports.ui.layout;
-const Main = imports.ui.main;
-const PageIndicators = imports.ui.pageIndicators;
-const ParentalControlsManager = imports.misc.parentalControlsManager;
-const PopupMenu = imports.ui.popupMenu;
-const Search = imports.ui.search;
-const SwipeTracker = imports.ui.swipeTracker;
-const Params = imports.misc.params;
-const SystemActions = imports.misc.systemActions;
-
-var MENU_POPUP_TIMEOUT = 600;
-var POPDOWN_DIALOG_TIMEOUT = 500;
-
-var FOLDER_SUBICON_FRACTION = .4;
-
-var VIEWS_SWITCH_TIME = 400;
-var VIEWS_SWITCH_ANIMATION_DELAY = 100;
-
-var SCROLL_TIMEOUT_TIME = 150;
-
-var APP_ICON_SCALE_IN_TIME = 500;
-var APP_ICON_SCALE_IN_DELAY = 700;
-
-var APP_ICON_TITLE_EXPAND_TIME = 200;
-var APP_ICON_TITLE_COLLAPSE_TIME = 100;
+
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Gio from 'gi://Gio';
+import Graphene from 'gi://Graphene';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as AppFavorites from './appFavorites.js';
+import {AppMenu} from './appMenu.js';
+import * as BoxPointer from './boxpointer.js';
+import * as DND from './dnd.js';
+import * as GrabHelper from './grabHelper.js';
+import * as IconGrid from './iconGrid.js';
+import * as Layout from './layout.js';
+import * as PageIndicators from './pageIndicators.js';
+import * as ParentalControlsManager from '../misc/parentalControlsManager.js';
+import * as PopupMenu from './popupMenu.js';
+import * as Search from './search.js';
+import * as SwipeTracker from './swipeTracker.js';
+import * as Params from '../misc/params.js';
+import * as SystemActions from '../misc/systemActions.js';
+
+import * as Main from './main.js';
+
+const MENU_POPUP_TIMEOUT = 600;
+const POPDOWN_DIALOG_TIMEOUT = 500;
+
+const FOLDER_SUBICON_FRACTION = .4;
+
+const VIEWS_SWITCH_TIME = 400;
+const VIEWS_SWITCH_ANIMATION_DELAY = 100;
+
+const SCROLL_TIMEOUT_TIME = 150;
+
+const APP_ICON_SCALE_IN_TIME = 500;
+const APP_ICON_SCALE_IN_DELAY = 700;
+
+const APP_ICON_TITLE_EXPAND_TIME = 200;
+const APP_ICON_TITLE_COLLAPSE_TIME = 100;
const FOLDER_DIALOG_ANIMATION_TIME = 200;
return null;
}
-const AppGrid = GObject.registerClass({
+export const AppGrid = GObject.registerClass({
Properties: {
'indicators-padding': GObject.ParamSpec.boxed('indicators-padding',
'Indicators padding', 'Indicators padding',
}
});
-var PageManager = GObject.registerClass({
+const PageManager = GObject.registerClass({
Signals: { 'layout-changed': {} },
}, class PageManager extends GObject.Object {
_init() {
}
});
-var AppDisplay = GObject.registerClass(
+export const AppDisplay = GObject.registerClass(
class AppDisplay extends BaseAppView {
_init() {
super._init({
}
});
-var AppSearchProvider = class AppSearchProvider {
+export class AppSearchProvider {
constructor() {
this._appSys = Shell.AppSystem.get_default();
this.id = 'applications';
return new SystemActionIcon(this, resultMeta);
}
}
-};
+}
-var AppViewItem = GObject.registerClass(
+export const AppViewItem = GObject.registerClass(
class AppViewItem extends St.Button {
_init(params = {}, isDraggable = true, expandTitleOnHover = true) {
super._init({
}
});
-var FolderGrid = GObject.registerClass(
+const FolderGrid = GObject.registerClass(
class FolderGrid extends AppGrid {
_init() {
super._init({
}
});
-var FolderView = GObject.registerClass(
+export const FolderView = GObject.registerClass(
class FolderView extends BaseAppView {
_init(folder, id, parentView) {
super._init({
}
});
-var FolderIcon = GObject.registerClass({
+export const FolderIcon = GObject.registerClass({
Signals: {
'apps-changed': {},
},
}
});
-var AppFolderDialog = GObject.registerClass({
+export const AppFolderDialog = GObject.registerClass({
Signals: {
'open-state-changed': { param_types: [GObject.TYPE_BOOLEAN] },
},
}
});
-var AppIcon = GObject.registerClass({
+export const AppIcon = GObject.registerClass({
Signals: {
'menu-state-changed': { param_types: [GObject.TYPE_BOOLEAN] },
'sync-tooltip': {},
}
});
-var SystemActionIcon = GObject.registerClass(
+const SystemActionIcon = GObject.registerClass(
class SystemActionIcon extends Search.GridSearchResult {
activate() {
SystemActions.getDefault().activateAction(this.metaInfo['id']);
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported getAppFavorites */
-const Shell = imports.gi.Shell;
-const ParentalControlsManager = imports.misc.parentalControlsManager;
-const Signals = imports.misc.signals;
+import Shell from 'gi://Shell';
+import * as ParentalControlsManager from '../misc/parentalControlsManager.js';
+import * as Signals from '../misc/signals.js';
-const Main = imports.ui.main;
+import * as Main from './main.js';
// In alphabetical order
const RENAMED_DESKTOP_IDS = {
/**
* @returns {AppFavorites}
*/
-function getAppFavorites() {
+export function getAppFavorites() {
if (appFavoritesInstance == null)
appFavoritesInstance = new AppFavorites();
return appFavoritesInstance;
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported AppMenu */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const AppFavorites = imports.ui.appFavorites;
-const Main = imports.ui.main;
-const ParentalControlsManager = imports.misc.parentalControlsManager;
-const PopupMenu = imports.ui.popupMenu;
-
-var AppMenu = class AppMenu extends PopupMenu.PopupMenu {
+
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as AppFavorites from './appFavorites.js';
+import * as Main from './main.js';
+import * as ParentalControlsManager from '../misc/parentalControlsManager.js';
+import * as PopupMenu from './popupMenu.js';
+
+export class AppMenu extends PopupMenu.PopupMenu {
/**
* @param {Clutter.Actor} sourceActor - actor the menu is attached to
* @param {St.Side} side - arrow side
}, item);
});
}
-};
+}
-/* exported AudioDeviceSelectionDBus */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Dialog = imports.ui.dialog;
-const Main = imports.ui.main;
-const ModalDialog = imports.ui.modalDialog;
-
-const { loadInterfaceXML } = imports.misc.fileUtils;
-
-var AudioDevice = {
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Dialog from './dialog.js';
+import * as ModalDialog from './modalDialog.js';
+
+import * as Main from './main.js';
+import {loadInterfaceXML} from '../misc/fileUtils.js';
+
+const AudioDevice = {
HEADPHONES: 1 << 0,
HEADSET: 1 << 1,
MICROPHONE: 1 << 2,
const AudioDeviceSelectionIface = loadInterfaceXML('org.gnome.Shell.AudioDeviceSelection');
-var AudioDeviceSelectionDialog = GObject.registerClass({
+const AudioDeviceSelectionDialog = GObject.registerClass({
Signals: { 'device-selected': { param_types: [GObject.TYPE_UINT] } },
}, class AudioDeviceSelectionDialog extends ModalDialog.ModalDialog {
_init(devices) {
}
});
-var AudioDeviceSelectionDBus = class AudioDeviceSelectionDBus {
+export class AudioDeviceSelectionDBus {
constructor() {
this._audioSelectionDialog = null;
invocation.return_value(null);
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported SystemBackground, BackgroundManager */
// READ THIS FIRST
// Background handling is a maze of objects, both objects in this file, and
// MetaBackgroundImage MetaBackgroundImage
// MetaBackgroundImage MetaBackgroundImage
-const Clutter = imports.gi.Clutter;
-const GDesktopEnums = imports.gi.GDesktopEnums;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const GnomeBG = imports.gi.GnomeBG;
-const GnomeDesktop = imports.gi.GnomeDesktop;
-const Meta = imports.gi.Meta;
-const Signals = imports.misc.signals;
+import Clutter from 'gi://Clutter';
+import GDesktopEnums from 'gi://GDesktopEnums';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import GnomeBG from 'gi://GnomeBG';
+import GnomeDesktop from 'gi://GnomeDesktop';
+import Meta from 'gi://Meta';
+import * as Signals from '../misc/signals.js';
-const LoginManager = imports.misc.loginManager;
-const Main = imports.ui.main;
-const Params = imports.misc.params;
+import * as LoginManager from '../misc/loginManager.js';
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
-var DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
+const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
const PRIMARY_COLOR_KEY = 'primary-color';
const INTERFACE_SCHEMA = 'org.gnome.desktop.interface';
const COLOR_SCHEME_KEY = 'color-scheme';
-var FADE_ANIMATION_TIME = 1000;
+const FADE_ANIMATION_TIME = 1000;
// These parameters affect how often we redraw.
// The first is how different (percent crossfaded) the slide show
// has to look before redrawing and the second is the minimum
// frequency (in seconds) we're willing to wake up
-var ANIMATION_OPACITY_STEP_INCREMENT = 4.0;
-var ANIMATION_MIN_WAKEUP_INTERVAL = 1.0;
+const ANIMATION_OPACITY_STEP_INCREMENT = 4.0;
+const ANIMATION_MIN_WAKEUP_INTERVAL = 1.0;
let _backgroundCache = null;
return file1.equal(file2);
}
-var BackgroundCache = class BackgroundCache extends Signals.EventEmitter {
+class BackgroundCache extends Signals.EventEmitter {
constructor() {
super();
}
}
}
-};
+}
/**
* @returns {BackgroundCache}
return _backgroundCache;
}
-var Background = GObject.registerClass({
+const Background = GObject.registerClass({
Signals: { 'loaded': {}, 'bg-changed': {} },
}, class Background extends Meta.Background {
_init(params) {
let _systemBackground;
-var SystemBackground = GObject.registerClass({
+export const SystemBackground = GObject.registerClass({
Signals: { 'loaded': {} },
}, class SystemBackground extends Meta.BackgroundActor {
_init() {
}
});
-var BackgroundSource = class BackgroundSource {
+class BackgroundSource {
constructor(layoutManager, settingsSchema) {
// Allow override the background image setting for performance testing
this._layoutManager = layoutManager;
this._backgrounds = null;
}
-};
+}
-var Animation = GObject.registerClass(
+const Animation = GObject.registerClass(
class Animation extends GnomeBG.BGSlideShow {
_init(params) {
super._init(params);
}
});
-var BackgroundManager = class BackgroundManager extends Signals.EventEmitter {
+export class BackgroundManager extends Signals.EventEmitter {
constructor(params) {
super();
params = Params.parse(params, {
return backgroundActor;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported addBackgroundMenu */
-const Clutter = imports.gi.Clutter;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import St from 'gi://St';
-const BoxPointer = imports.ui.boxpointer;
-const Main = imports.ui.main;
-const PopupMenu = imports.ui.popupMenu;
+import * as BoxPointer from './boxpointer.js';
+import * as PopupMenu from './popupMenu.js';
-var BackgroundMenu = class BackgroundMenu extends PopupMenu.PopupMenu {
+import * as Main from './main.js';
+
+export class BackgroundMenu extends PopupMenu.PopupMenu {
constructor(layoutManager) {
super(layoutManager.dummyCursor, 0, St.Side.TOP);
layoutManager.uiGroup.add_actor(this.actor);
this.actor.hide();
}
-};
+}
/**
* @param {Meta.BackgroundActor} actor
* @param {import('./layout.js').LayoutManager} layoutManager
*/
-function addBackgroundMenu(actor, layoutManager) {
+export function addBackgroundMenu(actor, layoutManager) {
actor.reactive = true;
actor._backgroundMenu = new BackgroundMenu(layoutManager);
actor._backgroundManager = new PopupMenu.PopupMenuManager(actor);
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
-/* exported BarLevel */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
-var BarLevel = GObject.registerClass({
+export const BarLevel = GObject.registerClass({
Properties: {
'value': GObject.ParamSpec.double(
'value', 'value', 'value',
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported BoxPointer */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import St from 'gi://St';
-const Main = imports.ui.main;
+import * as Main from './main.js';
-var PopupAnimation = {
+export const PopupAnimation = {
NONE: 0,
SLIDE: 1 << 0,
FADE: 1 << 1,
FULL: ~0,
};
-var POPUP_ANIMATION_TIME = 150;
+const POPUP_ANIMATION_TIME = 150;
/**
* BoxPointer:
- * @side: side to draw the arrow on
- * @binProperties: Properties to set on contained bin
*
* An actor which displays a triangle "arrow" pointing to a given
* side. The .bin property is a container in which content can be
* totally inside the monitor workarea if possible.
*
*/
-var BoxPointer = GObject.registerClass({
+export const BoxPointer = GObject.registerClass({
Signals: { 'arrow-side-changed': {} },
}, class BoxPointer extends St.Widget {
/**
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Calendar, CalendarMessageList, DBusEventSource */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const Main = imports.ui.main;
-const MessageList = imports.ui.messageList;
-const MessageTray = imports.ui.messageTray;
-const Mpris = imports.ui.mpris;
-const PopupMenu = imports.ui.popupMenu;
-const {ensureActorVisibleInScrollView} = imports.misc.animationUtils;
+import * as Main from './main.js';
+import * as MessageList from './messageList.js';
+import * as MessageTray from './messageTray.js';
+import * as Mpris from './mpris.js';
+import * as PopupMenu from './popupMenu.js';
+import {ensureActorVisibleInScrollView} from '../misc/animationUtils.js';
-const {formatDateWithCFormatString, formatTimeSpan} = imports.misc.dateUtils;
-const {loadInterfaceXML} = imports.misc.fileUtils;
+import {formatDateWithCFormatString, formatTimeSpan} from '../misc/dateUtils.js';
+import {loadInterfaceXML} from '../misc/fileUtils.js';
-var SHOW_WEEKDATE_KEY = 'show-weekdate';
+const SHOW_WEEKDATE_KEY = 'show-weekdate';
-var MESSAGE_ICON_SIZE = -1; // pick up from CSS
+const MESSAGE_ICON_SIZE = -1; // pick up from CSS
-var NC_ = (context, str) => `${context}\u0004${str}`;
+const NC_ = (context, str) => `${context}\u0004${str}`;
function sameYear(dateA, dateB) {
return dateA.getYear() == dateB.getYear();
// Abstraction for an appointment/event in a calendar
-var CalendarEvent = class CalendarEvent {
+class CalendarEvent {
constructor(id, date, end, summary) {
this.id = id;
this.date = date;
this.end = end;
this.summary = summary;
}
-};
+}
// Interface for appointments/events - e.g. the contents of a calendar
//
-var EventSourceBase = GObject.registerClass({
+export const EventSourceBase = GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
Properties: {
'has-calendars': GObject.ParamSpec.boolean(
}
});
-var EmptyEventSource = GObject.registerClass(
+export const EmptyEventSource = GObject.registerClass(
class EmptyEventSource extends EventSourceBase {
get isLoading() {
return false;
}
// an implementation that reads data from a session bus service
-var DBusEventSource = GObject.registerClass(
+export const DBusEventSource = GObject.registerClass(
class DBusEventSource extends EventSourceBase {
_init() {
super._init();
}
});
-var Calendar = GObject.registerClass({
+export const Calendar = GObject.registerClass({
Signals: { 'selected-date-changed': { param_types: [GLib.DateTime.$gtype] } },
}, class Calendar extends St.Widget {
_init() {
}
});
-var NotificationMessage = GObject.registerClass(
+export const NotificationMessage = GObject.registerClass(
class NotificationMessage extends MessageList.Message {
_init(notification) {
super._init(notification.title, notification.bannerBodyText);
}
});
-var TimeLabel = GObject.registerClass(
+const TimeLabel = GObject.registerClass(
class NotificationTimeLabel extends St.Label {
_init(datetime) {
super._init({
}
});
-var NotificationSection = GObject.registerClass(
+const NotificationSection = GObject.registerClass(
class NotificationSection extends MessageList.MessageListSection {
_init() {
super._init();
}
});
-var Placeholder = GObject.registerClass(
+const Placeholder = GObject.registerClass(
class Placeholder extends St.BoxLayout {
_init() {
super._init({ style_class: 'message-list-placeholder', vertical: true });
}
});
-var CalendarMessageList = GObject.registerClass(
+export const CalendarMessageList = GObject.registerClass(
class CalendarMessageList extends St.Widget {
_init() {
super._init({
-/* exported CheckBox */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Pango = imports.gi.Pango;
-const St = imports.gi.St;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Pango from 'gi://Pango';
+import St from 'gi://St';
-var CheckBox = GObject.registerClass(
+export const CheckBox = GObject.registerClass(
class CheckBox extends St.Button {
_init(label) {
let container = new St.BoxLayout({
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported CloseDialog */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const Dialog = imports.ui.dialog;
-const Main = imports.ui.main;
+import * as Dialog from './dialog.js';
+import * as Main from './main.js';
-var FROZEN_WINDOW_BRIGHTNESS = -0.3;
-var DIALOG_TRANSITION_TIME = 150;
-var ALIVE_TIMEOUT = 5000;
+const FROZEN_WINDOW_BRIGHTNESS = -0.3;
+const DIALOG_TRANSITION_TIME = 150;
+const ALIVE_TIMEOUT = 5000;
-var CloseDialog = GObject.registerClass({
+export const CloseDialog = GObject.registerClass({
Implements: [Meta.CloseDialog],
Properties: {
'window': GObject.ParamSpec.override('window', Meta.CloseDialog),
-/* exported ComponentManager */
-const Main = imports.ui.main;
+import * as Main from './main.js';
-var ComponentManager = class {
+export class ComponentManager {
constructor() {
this._allComponents = {};
this._enabledComponents = [];
}
async _importComponent(name) {
- // TODO: Import as module
- let module = await imports.ui.components[name];
+ let module = await import(`./components/${name}.js`);
return module.Component;
}
return;
component.disable();
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Component */
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const Params = imports.misc.params;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import * as Params from '../../misc/params.js';
-const GnomeSession = imports.misc.gnomeSession;
-const Main = imports.ui.main;
-const ShellMountOperation = imports.ui.shellMountOperation;
+import * as GnomeSession from '../../misc/gnomeSession.js';
+import * as Main from '../main.js';
+import * as ShellMountOperation from '../shellMountOperation.js';
-var GNOME_SESSION_AUTOMOUNT_INHIBIT = 16;
+const GNOME_SESSION_AUTOMOUNT_INHIBIT = 16;
// GSettings keys
const SETTINGS_SCHEMA = 'org.gnome.desktop.media-handling';
const SETTING_ENABLE_AUTOMOUNT = 'automount';
-var AUTORUN_EXPIRE_TIMEOUT_SECS = 10;
+const AUTORUN_EXPIRE_TIMEOUT_SECS = 10;
-var AutomountManager = class {
+class AutomountManager {
constructor() {
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA });
this._activeOperations = new Map();
volume._allowAutorunExpireId = id;
GLib.Source.set_name_by_id(id, '[gnome-shell] volume.allowAutorun');
}
-};
-var Component = AutomountManager;
+}
+
+export {AutomountManager as Component};
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Component */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
-const GnomeSession = imports.misc.gnomeSession;
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
+import * as GnomeSession from '../../misc/gnomeSession.js';
+import * as Main from '../main.js';
+import * as MessageTray from '../messageTray.js';
Gio._promisify(Gio.Mount.prototype, 'guess_content_type');
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
// GSettings keys
const SETTINGS_SCHEMA = 'org.gnome.desktop.media-handling';
const SETTING_OPEN_FOLDER = 'autorun-x-content-open-folder';
/** @enum {number} */
-var AutorunSetting = {
+const AutorunSetting = {
RUN: 0,
IGNORE: 1,
FILES: 2,
'/org/gnome/Shell/HotplugSniffer');
}
-var ContentTypeDiscoverer = class {
+class ContentTypeDiscoverer {
constructor() {
this._settings = new Gio.Settings({ schema_id: SETTINGS_SCHEMA });
}
return [apps, contentTypes];
}
-};
+}
-var AutorunManager = class {
+class AutorunManager {
constructor() {
this._session = new GnomeSession.SessionManager();
this._volumeMonitor = Gio.VolumeMonitor.get();
_onMountRemoved(monitor, mount) {
this._dispatcher.removeMount(mount);
}
-};
+}
-var AutorunDispatcher = class {
+class AutorunDispatcher {
constructor(manager) {
this._manager = manager;
this._sources = [];
// destroy the notification source
source.destroy();
}
-};
+}
-var AutorunSource = GObject.registerClass(
+const AutorunSource = GObject.registerClass(
class AutorunSource extends MessageTray.Source {
_init(manager, mount, apps) {
super._init(mount.get_name());
}
});
-var AutorunNotification = GObject.registerClass(
+const AutorunNotification = GObject.registerClass(
class AutorunNotification extends MessageTray.Notification {
_init(manager, source) {
super._init(source, source.title);
}
});
-var Component = AutorunManager;
+export {AutorunManager as Component};
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Component */
-
-const Clutter = imports.gi.Clutter;
-const Gcr = imports.gi.Gcr;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Dialog = imports.ui.dialog;
-const ModalDialog = imports.ui.modalDialog;
-const ShellEntry = imports.ui.shellEntry;
-const CheckBox = imports.ui.checkBox;
-const {wiggle} = imports.misc.animationUtils;
-
-var KeyringDialog = GObject.registerClass(
+
+import Clutter from 'gi://Clutter';
+import Gcr from 'gi://Gcr';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Dialog from '../dialog.js';
+import * as ModalDialog from '../modalDialog.js';
+import * as ShellEntry from '../shellEntry.js';
+import * as CheckBox from '../checkBox.js';
+import {wiggle} from '../misc/animationUtils.js';
+
+const KeyringDialog = GObject.registerClass(
class KeyringDialog extends ModalDialog.ModalDialog {
_init() {
super._init({ styleClass: 'prompt-dialog' });
}
});
-var KeyringDummyDialog = class {
+class KeyringDummyDialog {
constructor() {
this.prompt = new Shell.KeyringPrompt();
this.prompt.connect('show-password', this._cancelPrompt.bind(this));
_cancelPrompt() {
this.prompt.cancel();
}
-};
+}
-var KeyringPrompter = GObject.registerClass(
+const KeyringPrompter = GObject.registerClass(
class KeyringPrompter extends Gcr.SystemPrompter {
_init() {
super._init();
}
});
-var Component = KeyringPrompter;
+export {KeyringPrompter as Component};
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Component */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const NM = imports.gi.NM;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Signals = imports.misc.signals;
-
-const Dialog = imports.ui.dialog;
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
-const ModalDialog = imports.ui.modalDialog;
-const ShellEntry = imports.ui.shellEntry;
+
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import NM from 'gi://NM';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import * as Signals from '../../misc/signals.js';
+
+import * as Dialog from '../dialog.js';
+import * as Main from '../main.js';
+import * as MessageTray from '../messageTray.js';
+import * as ModalDialog from '../modalDialog.js';
+import * as ShellEntry from '../shellEntry.js';
Gio._promisify(Shell.NetworkAgent.prototype, 'init_async');
Gio._promisify(Shell.NetworkAgent.prototype, 'search_vpn_plugin');
const VPN_UI_GROUP = 'VPN Plugin UI';
-var NetworkSecretDialog = GObject.registerClass(
+const NetworkSecretDialog = GObject.registerClass(
class NetworkSecretDialog extends ModalDialog.ModalDialog {
_init(agent, requestId, connection, settingName, hints, flags, contentOverride) {
super._init({ styleClass: 'prompt-dialog' });
}
});
-var VPNRequestHandler = class extends Signals.EventEmitter {
+class VPNRequestHandler extends Signals.EventEmitter {
constructor(agent, requestId, authHelper, serviceType, connection, hints, flags) {
super();
this.destroy();
}
}
-};
+}
-var NetworkAgent = class {
+class NetworkAgent {
constructor() {
this._native = new Shell.NetworkAgent({
identifier: 'org.gnome.Shell.NetworkAgent',
externalUIMode: ['true', 'yes', 'on', '1'].includes(trimmedProp),
};
}
-};
-var Component = NetworkAgent;
+}
+
+export {NetworkAgent as Component};
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Component */
-
-const AccountsService = imports.gi.AccountsService;
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Pango = imports.gi.Pango;
-const PolkitAgent = imports.gi.PolkitAgent;
-const Polkit = imports.gi.Polkit;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Dialog = imports.ui.dialog;
-const Main = imports.ui.main;
-const ModalDialog = imports.ui.modalDialog;
-const ShellEntry = imports.ui.shellEntry;
-const UserWidget = imports.ui.userWidget;
-const {wiggle} = imports.misc.animationUtils;
+
+import AccountsService from 'gi://AccountsService';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Pango from 'gi://Pango';
+import PolkitAgent from 'gi://PolkitAgent';
+import Polkit from 'gi://Polkit';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Dialog from '../dialog.js';
+import * as Main from '../main.js';
+import * as ModalDialog from '../modalDialog.js';
+import * as ShellEntry from '../shellEntry.js';
+import * as UserWidget from '../userWidget.js';
+import {wiggle} from '../misc/animationUtils.js';
/** @enum {number} */
const DialogMode = {
const DELAYED_RESET_TIMEOUT = 200;
-var AuthenticationDialog = GObject.registerClass({
+const AuthenticationDialog = GObject.registerClass({
Signals: { 'done': { param_types: [GObject.TYPE_BOOLEAN] } },
}, class AuthenticationDialog extends ModalDialog.ModalDialog {
_init(actionId, description, cookie, userNames) {
}
});
-var AuthenticationAgent = GObject.registerClass(
+const AuthenticationAgent = GObject.registerClass(
class AuthenticationAgent extends Shell.PolkitAuthenticationAgent {
_init() {
super._init();
}
});
-var Component = AuthenticationAgent;
+export {AuthenticationAgent as Component};
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Component */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
-
-var Tpl = null;
-var Tp = null;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
+
+let Tpl = null;
+let Tp = null;
try {
- ({ TelepathyGLib: Tp, TelepathyLogger: Tpl } = imports.gi);
+ ({default: Tp} = await import('gi://TelepathyGlib'));
+ ({default: Tpl} = await import('gi://TelepathyLogger'));
Gio._promisify(Tp.Channel.prototype, 'close_async');
Gio._promisify(Tp.TextChannel.prototype, 'send_message_async');
console.debug('Skipping chat support, telepathy not found');
}
-const History = imports.misc.history;
-const Main = imports.ui.main;
-const MessageList = imports.ui.messageList;
-const MessageTray = imports.ui.messageTray;
-const Params = imports.misc.params;
-const Util = imports.misc.util;
+import * as History from '../../misc/history.js';
+import * as Main from '../main.js';
+import * as MessageList from '../messageList.js';
+import * as MessageTray from '../messageTray.js';
+import * as Params from '../../misc/params.js';
+import * as Util from '../../misc/util.js';
const HAVE_TP = Tp != null && Tpl != null;
// See Notification.appendMessage
-var SCROLLBACK_IMMEDIATE_TIME = 3 * 60; // 3 minutes
-var SCROLLBACK_RECENT_TIME = 15 * 60; // 15 minutes
-var SCROLLBACK_RECENT_LENGTH = 20;
-var SCROLLBACK_IDLE_LENGTH = 5;
+const SCROLLBACK_IMMEDIATE_TIME = 3 * 60; // 3 minutes
+const SCROLLBACK_RECENT_TIME = 15 * 60; // 15 minutes
+const SCROLLBACK_RECENT_LENGTH = 20;
+const SCROLLBACK_IDLE_LENGTH = 5;
// See Source._displayPendingMessages
-var SCROLLBACK_HISTORY_LINES = 10;
+const SCROLLBACK_HISTORY_LINES = 10;
// See Notification._onEntryChanged
-var COMPOSING_STOP_TIMEOUT = 5;
+const COMPOSING_STOP_TIMEOUT = 5;
-var CHAT_EXPAND_LINES = 12;
+const CHAT_EXPAND_LINES = 12;
-var NotificationDirection = {
+const NotificationDirection = {
SENT: 'chat-sent',
RECEIVED: 'chat-received',
};
}) : null;
-var TelepathyComponent = class {
+class TelepathyComponent {
constructor() {
this._client = null;
this._client.unregister();
}
-};
+}
-var TelepathyClient = HAVE_TP ? GObject.registerClass(
+const TelepathyClient = HAVE_TP ? GObject.registerClass(
class TelepathyClient extends Tp.BaseClient {
_init() {
// channel path -> ChatSource
}
}) : null;
-var ChatSource = HAVE_TP ? GObject.registerClass(
+const ChatSource = HAVE_TP ? GObject.registerClass(
class ChatSource extends MessageTray.Source {
_init(account, conn, channel, contact, client) {
this._account = account;
}
}) : null;
-var ChatNotification = HAVE_TP ? GObject.registerClass({
+const ChatNotification = HAVE_TP ? GObject.registerClass({
Signals: {
'message-removed': { param_types: [ChatNotificationMessage.$gtype] },
'message-added': { param_types: [ChatNotificationMessage.$gtype] },
}
}) : null;
-var ChatLineBox = GObject.registerClass(
+const ChatLineBox = GObject.registerClass(
class ChatLineBox extends St.BoxLayout {
vfunc_get_preferred_height(forWidth) {
let [, natHeight] = super.vfunc_get_preferred_height(forWidth);
}
});
-var ChatNotificationBanner = GObject.registerClass(
+const ChatNotificationBanner = GObject.registerClass(
class ChatNotificationBanner extends MessageTray.NotificationBanner {
_init(notification) {
super._init(notification);
}
});
-var Component = TelepathyComponent;
+export const Component = TelepathyComponent;
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported CtrlAltTabManager */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const Main = imports.ui.main;
-const SwitcherPopup = imports.ui.switcherPopup;
-const Params = imports.misc.params;
+import * as Main from './main.js';
+import * as SwitcherPopup from './switcherPopup.js';
+import * as Params from '../misc/params.js';
-var POPUP_APPICON_SIZE = 96;
+const POPUP_APPICON_SIZE = 96;
-var SortGroup = {
+export const SortGroup = {
TOP: 0,
MIDDLE: 1,
BOTTOM: 2,
};
-var CtrlAltTabManager = class CtrlAltTabManager {
+export class CtrlAltTabManager {
constructor() {
this._items = [];
this.addGroup(global.window_group,
_focusWindows(timestamp) {
global.display.focus_default_window(timestamp);
}
-};
+}
-var CtrlAltTabPopup = GObject.registerClass(
+const CtrlAltTabPopup = GObject.registerClass(
class CtrlAltTabPopup extends SwitcherPopup.SwitcherPopup {
_init(items) {
super._init(items);
}
});
-var CtrlAltTabSwitcher = GObject.registerClass(
+const CtrlAltTabSwitcher = GObject.registerClass(
class CtrlAltTabSwitcher extends SwitcherPopup.SwitcherList {
_init(items) {
super._init(true);
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Dash */
-
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Graphene = imports.gi.Graphene;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const AppDisplay = imports.ui.appDisplay;
-const AppFavorites = imports.ui.appFavorites;
-const DND = imports.ui.dnd;
-const IconGrid = imports.ui.iconGrid;
-const Main = imports.ui.main;
-const Overview = imports.ui.overview;
-
-var DASH_ANIMATION_TIME = 200;
-var DASH_ITEM_LABEL_SHOW_TIME = 150;
-var DASH_ITEM_LABEL_HIDE_TIME = 100;
-var DASH_ITEM_HOVER_TIMEOUT = 300;
+
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Graphene from 'gi://Graphene';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as AppDisplay from './appDisplay.js';
+import * as AppFavorites from './appFavorites.js';
+import * as DND from './dnd.js';
+import * as IconGrid from './iconGrid.js';
+import * as Main from './main.js';
+import * as Overview from './overview.js';
+
+const DASH_ANIMATION_TIME = 200;
+const DASH_ITEM_LABEL_SHOW_TIME = 150;
+const DASH_ITEM_LABEL_HIDE_TIME = 100;
+const DASH_ITEM_HOVER_TIMEOUT = 300;
/**
* @param {AppDisplay.AppIcon} source
return null;
}
-var DashIcon = GObject.registerClass(
+export const DashIcon = GObject.registerClass(
class DashIcon extends AppDisplay.AppIcon {
_init(app) {
super._init(app, {
// A container like StBin, but taking the child's scale into account
// when requesting a size
-var DashItemContainer = GObject.registerClass(
+export const DashItemContainer = GObject.registerClass(
class DashItemContainer extends St.Widget {
_init() {
super._init({
}
});
-var ShowAppsIcon = GObject.registerClass(
+export const ShowAppsIcon = GObject.registerClass(
class ShowAppsIcon extends DashItemContainer {
_init() {
super._init();
}
});
-var DragPlaceholderItem = GObject.registerClass(
+const DragPlaceholderItem = GObject.registerClass(
class DragPlaceholderItem extends DashItemContainer {
_init() {
super._init();
}
});
-var EmptyDropTargetItem = GObject.registerClass(
+const EmptyDropTargetItem = GObject.registerClass(
class EmptyDropTargetItem extends DashItemContainer {
_init() {
super._init();
const baseIconSizes = [16, 22, 24, 32, 48, 64];
-var Dash = GObject.registerClass({
+export const Dash = GObject.registerClass({
Signals: { 'icon-size-changed': {} },
}, class Dash extends St.Widget {
_init() {
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported DateMenuButton */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GnomeDesktop = imports.gi.GnomeDesktop;
-const GObject = imports.gi.GObject;
-const GWeather = imports.gi.GWeather;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Main = imports.ui.main;
-const PanelMenu = imports.ui.panelMenu;
-const Calendar = imports.ui.calendar;
-const Weather = imports.misc.weather;
-const DateUtils = imports.misc.dateUtils;
-
-const {formatDateWithCFormatString, formatTime} = imports.misc.dateUtils;
-const {loadInterfaceXML} = imports.misc.fileUtils;
+
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GnomeDesktop from 'gi://GnomeDesktop';
+import GObject from 'gi://GObject';
+import GWeather from 'gi://GWeather';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Main from './main.js';
+import * as PanelMenu from './panelMenu.js';
+import * as Calendar from './calendar.js';
+import * as Weather from '../misc/weather.js';
+
+import {formatDateWithCFormatString, formatTime, clearCachedLocalTimeZone} from '../misc/dateUtils.js';
+import {loadInterfaceXML} from '../misc/fileUtils.js';
const NC_ = (context, str) => `${context}\u0004${str}`;
const T_ = Shell.util_translate_time_string;
return new Date(datetime.to_unix() * 1000 + datetime.get_microsecond() / 1000);
}
-var TodayButton = GObject.registerClass(
+const TodayButton = GObject.registerClass(
class TodayButton extends St.Button {
_init(calendar) {
// Having the ability to go to the current date if the user is already
}
});
-var EventsSection = GObject.registerClass(
+const EventsSection = GObject.registerClass(
class EventsSection extends St.Button {
_init() {
super._init({
}
});
-var WorldClocksSection = GObject.registerClass(
+const WorldClocksSection = GObject.registerClass(
class WorldClocksSection extends St.Button {
_init() {
super._init({
}
});
-var WeatherSection = GObject.registerClass(
+const WeatherSection = GObject.registerClass(
class WeatherSection extends St.Button {
_init() {
super._init({
}
});
-var MessagesIndicator = GObject.registerClass(
+const MessagesIndicator = GObject.registerClass(
class MessagesIndicator extends St.Icon {
_init() {
super._init({
}
});
-var FreezableBinLayout = GObject.registerClass(
+const FreezableBinLayout = GObject.registerClass(
class FreezableBinLayout extends Clutter.BinLayout {
_init() {
super._init();
}
});
-var CalendarColumnLayout = GObject.registerClass(
+const CalendarColumnLayout = GObject.registerClass(
class CalendarColumnLayout extends Clutter.BoxLayout {
_init(actors) {
super._init({orientation: Clutter.Orientation.VERTICAL});
}
});
-var DateMenuButton = GObject.registerClass(
+export const DateMenuButton = GObject.registerClass(
class DateMenuButton extends PanelMenu.Button {
_init() {
let hbox;
}
_updateTimeZone() {
- DateUtils.clearCachedLocalTimeZone();
+ clearCachedLocalTimeZone();
this._calendar.updateTimeZone();
}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Dialog, MessageDialogContent, ListSection, ListSectionItem */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Pango = imports.gi.Pango;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Pango from 'gi://Pango';
+import St from 'gi://St';
function _setLabel(label, value) {
label.set({
});
}
-var Dialog = GObject.registerClass(
+export const Dialog = GObject.registerClass(
class Dialog extends St.Widget {
_init(parentActor, styleClass) {
super._init({
}
});
-var MessageDialogContent = GObject.registerClass({
+export const MessageDialogContent = GObject.registerClass({
Properties: {
'title': GObject.ParamSpec.string(
'title', 'title', 'title',
}
});
-var ListSection = GObject.registerClass({
+export const ListSection = GObject.registerClass({
Properties: {
'title': GObject.ParamSpec.string(
'title', 'title', 'title',
}
});
-var ListSectionItem = GObject.registerClass({
+export const ListSectionItem = GObject.registerClass({
Properties: {
'icon-actor': GObject.ParamSpec.object(
'icon-actor', 'icon-actor', 'Icon actor',
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported addDragMonitor, removeDragMonitor, makeDraggable */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Signals = imports.misc.signals;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import * as Signals from '../misc/signals.js';
-const Main = imports.ui.main;
-const Params = imports.misc.params;
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
// Time to scale down to maxDragActorSize
-var SCALE_ANIMATION_TIME = 250;
+const SCALE_ANIMATION_TIME = 250;
// Time to animate to original position on cancel
-var SNAP_BACK_ANIMATION_TIME = 250;
+const SNAP_BACK_ANIMATION_TIME = 250;
// Time to animate to original position on success
-var REVERT_ANIMATION_TIME = 750;
+const REVERT_ANIMATION_TIME = 750;
/** @enum {number} */
-varragMotionResult = {
+export const DragMotionResult = {
NO_DROP: 0,
COPY_DROP: 1,
MOVE_DROP: 2,
};
/** @enum {number} */
-varragState = {
+const DragState = {
INIT: 0,
DRAGGING: 1,
CANCELLED: 2,
};
-var DRAG_CURSOR_MAP = {
+const DRAG_CURSOR_MAP = {
0: Meta.Cursor.DND_UNSUPPORTED_TARGET,
1: Meta.Cursor.DND_COPY,
2: Meta.Cursor.DND_MOVE,
};
-var DragDropResult = {
+export const DragDropResult = {
FAILURE: 0,
SUCCESS: 1,
CONTINUE: 2,
};
-var dragMonitors = [];
+export const dragMonitors = [];
let eventHandlerActor = null;
let currentDraggable = null;
/**
* @param {DragMonitor} monitor
*/
-function addDragMonitor(monitor) {
+export function addDragMonitor(monitor) {
dragMonitors.push(monitor);
}
/**
* @param {DragMonitor} monitor
*/
-function removeDragMonitor(monitor) {
+export function removeDragMonitor(monitor) {
for (let i = 0; i < dragMonitors.length; i++) {
- if (dragMonitors[i] == monitor) {
+ if (dragMonitors[i] === monitor) {
dragMonitors.splice(i, 1);
return;
}
}
}
-var _Draggable = class _Draggable extends Signals.EventEmitter {
+class _Draggable extends Signals.EventEmitter {
constructor(actor, params) {
super();
if (!params.manualMode) {
this.actor.connect('button-press-event',
- this._onButtonPress.bind(this));
+ this._onButtonPress.bind(this));
this.actor.connect('touch-event',
- this._onTouchEvent.bind(this));
+ this._onTouchEvent.bind(this));
}
this.actor.connect('destroy', () => {
this._dragState = DragState.INIT;
currentDraggable = null;
}
-};
+}
/**
* makeDraggable:
* target wants to reuse the actor, it's up to the drop target to
* reset these values.
*/
-function makeDraggable(actor, params) {
+export function makeDraggable(actor, params) {
return new _Draggable(actor, params);
}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported EdgeDragAction */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import St from 'gi://St';
-const Main = imports.ui.main;
+import * as Main from './main.js';
-var EDGE_THRESHOLD = 20;
-var DRAG_DISTANCE = 80;
+const EDGE_THRESHOLD = 20;
+const DRAG_DISTANCE = 80;
-var EdgeDragAction = GObject.registerClass({
+export const EdgeDragAction = GObject.registerClass({
Signals: {
'activated': {},
'progress': { param_types: [GObject.TYPE_DOUBLE] },
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported init, EndSessionDialog */
/*
* Copyright 2010-2016 Red Hat, Inc
*
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-const AccountsService = imports.gi.AccountsService;
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Pango = imports.gi.Pango;
-const Polkit = imports.gi.Polkit;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const UPower = imports.gi.UPowerGlib;
-
-const CheckBox = imports.ui.checkBox;
-const Dialog = imports.ui.dialog;
-const GnomeSession = imports.misc.gnomeSession;
-const LoginManager = imports.misc.loginManager;
-const ModalDialog = imports.ui.modalDialog;
-const UserWidget = imports.ui.userWidget;
-
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import AccountsService from 'gi://AccountsService';
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Pango from 'gi://Pango';
+import Polkit from 'gi://Polkit';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import UPower from 'gi://UPowerGlib';
+
+import * as CheckBox from './checkBox.js';
+import * as Dialog from './dialog.js';
+import * as GnomeSession from '../misc/gnomeSession.js';
+import * as LoginManager from '../misc/loginManager.js';
+import * as ModalDialog from './modalDialog.js';
+import * as UserWidget from './userWidget.js';
+
+import {loadInterfaceXML} from '../misc/fileUtils.js';
const _ITEM_ICON_SIZE = 64;
4 /* DialogType.UPGRADE_RESTART */: restartUpgradeDialogContent,
};
-var MAX_USERS_IN_SESSION_DIALOG = 5;
+const MAX_USERS_IN_SESSION_DIALOG = 5;
const LogindSessionIface = loadInterfaceXML('org.freedesktop.login1.Session');
const LogindSession = Gio.DBusProxy.makeProxyWrapper(LogindSessionIface);
}
}
-function init() {
+export function init() {
// This always returns the same singleton object
// By instantiating it initially, we register the
// bus object, etc.
new EndSessionDialog();
}
-var EndSessionDialog = GObject.registerClass(
+const EndSessionDialog = GObject.registerClass(
class EndSessionDialog extends ModalDialog.ModalDialog {
_init() {
super._init({
import Shell from 'gi://Shell';
import St from 'gi://St';
-const SignalTracker = imports.misc.signalTracker;
-const {adjustAnimationTime} = imports.misc.animationUtils;
+import * as SignalTracker from '../misc/signalTracker.js';
+import {adjustAnimationTime} from '../misc/animationUtils.js';
setConsoleLogDomain('GNOME Shell');
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported init, installExtension, uninstallExtension, checkForUpdates */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Soup = imports.gi.Soup;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Soup from 'gi://Soup';
const Config = imports.misc.config;
-const Dialog = imports.ui.dialog;
-const ExtensionUtils = imports.misc.extensionUtils;
-const FileUtils = imports.misc.fileUtils;
-const Main = imports.ui.main;
-const ModalDialog = imports.ui.modalDialog;
+import * as Dialog from './dialog.js';
+import * as ExtensionUtils from '../misc/extensionUtils.js';
+import * as FileUtils from '../misc/fileUtils.js';
+import * as Main from './main.js';
+import * as ModalDialog from './modalDialog.js';
Gio._promisify(Soup.Session.prototype, 'send_and_read_async');
Gio._promisify(Gio.OutputStream.prototype, 'write_bytes_async');
Gio._promisify(Gio.IOStream.prototype, 'close_async');
Gio._promisify(Gio.Subprocess.prototype, 'wait_check_async');
-var REPOSITORY_URL_DOWNLOAD = 'https://extensions.gnome.org/download-extension/%s.shell-extension.zip';
-var REPOSITORY_URL_INFO = 'https://extensions.gnome.org/extension-info/';
-var REPOSITORY_URL_UPDATE = 'https://extensions.gnome.org/update-info/';
+const REPOSITORY_URL_DOWNLOAD = 'https://extensions.gnome.org/download-extension/%s.shell-extension.zip';
+const REPOSITORY_URL_INFO = 'https://extensions.gnome.org/extension-info/';
+const REPOSITORY_URL_UPDATE = 'https://extensions.gnome.org/update-info/';
let _httpSession;
* @param {Gio.DBusMethodInvocation} invocation - the caller
* @returns {void}
*/
-async function installExtension(uuid, invocation) {
+export async function installExtension(uuid, invocation) {
const params = {
uuid,
shell_version: Config.PACKAGE_VERSION,
/**
* @param {string} uuid
*/
-function uninstallExtension(uuid) {
+export function uninstallExtension(uuid) {
let extension = Main.extensionManager.lookup(uuid);
if (!extension)
return false;
* @param {string} uuid - extension uuid
* @returns {void}
*/
-async function downloadExtensionUpdate(uuid) {
+export async function downloadExtensionUpdate(uuid) {
if (!Main.extensionManager.updatesSupported)
return;
*
* @returns {void}
*/
-async function checkForUpdates() {
+export async function checkForUpdates() {
if (!Main.extensionManager.updatesSupported)
return;
}
}
-var InstallExtensionDialog = GObject.registerClass(
+const InstallExtensionDialog = GObject.registerClass(
class InstallExtensionDialog extends ModalDialog.ModalDialog {
_init(uuid, info, invocation) {
super._init({ styleClass: 'extension-dialog' });
}
});
-function init() {
+export function init() {
_httpSession = new Soup.Session();
}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported init connect disconnect ExtensionManager */
-const GLib = imports.gi.GLib;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Signals = imports.misc.signals;
+import GLib from 'gi://GLib';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
+import Shell from 'gi://Shell';
+import * as Signals from '../misc/signals.js';
-const ExtensionDownloader = imports.ui.extensionDownloader;
-const ExtensionUtils = imports.misc.extensionUtils;
-const FileUtils = imports.misc.fileUtils;
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
+import * as ExtensionDownloader from './extensionDownloader.js';
+import {ExtensionState, ExtensionType} from '../misc/extensionUtils.js';
+import * as FileUtils from '../misc/fileUtils.js';
+import * as Main from './main.js';
+import * as MessageTray from './messageTray.js';
const Config = imports.misc.config;
-const { ExtensionState, ExtensionType } = ExtensionUtils;
-
const ENABLED_EXTENSIONS_KEY = 'enabled-extensions';
const DISABLED_EXTENSIONS_KEY = 'disabled-extensions';
const DISABLE_USER_EXTENSIONS_KEY = 'disable-user-extensions';
const UPDATE_CHECK_TIMEOUT = 24 * 60 * 60; // 1 day in seconds
-var ExtensionManager = class extends Signals.EventEmitter {
+export class ExtensionManager extends Signals.EventEmitter {
constructor() {
super();
await this._onEnabledExtensionsChanged();
await this._enableAllExtensions();
}
-};
+}
const ExtensionUpdateSource = GObject.registerClass(
class ExtensionUpdateSource extends MessageTray.Source {
* Contributor:
* Magdalen Berns <m.berns@sms.ed.ac.uk>
*/
-/* exported FocusCaretTracker */
-const Atspi = imports.gi.Atspi;
-const Signals = imports.misc.signals;
+import Atspi from 'gi://Atspi';
+import * as Signals from '../misc/signals.js';
const CARETMOVED = 'object:text-caret-moved';
const STATECHANGED = 'object:state-changed';
-var FocusCaretTracker = class FocusCaretTracker extends Signals.EventEmitter {
+export class FocusCaretTracker extends Signals.EventEmitter {
constructor() {
super();
this._atspiListener.deregister(CARETMOVED);
this._caretListenerRegistered = false;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported GrabHelper */
-const Clutter = imports.gi.Clutter;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import St from 'gi://St';
-const Main = imports.ui.main;
-const Params = imports.misc.params;
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
/**
* GrabHelper:
* after you call ungrab(), but instead pass an 'onUngrab' callback when you
* call grab().
*/
-class GrabHelper {
+export class GrabHelper {
/**
* @param {Clutter.Actor} owner the actor that owns the GrabHelper
* @param {*} params optional parameters to pass to Main.pushModal()
return Clutter.EVENT_STOP;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported CandidatePopup */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const IBus = imports.gi.IBus;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import IBus from 'gi://IBus';
+import St from 'gi://St';
-const BoxPointer = imports.ui.boxpointer;
-const Main = imports.ui.main;
+import * as BoxPointer from './boxpointer.js';
+import * as Main from './main.js';
-var MAX_CANDIDATES_PER_PAGE = 16;
+const MAX_CANDIDATES_PER_PAGE = 16;
-var DEFAULT_INDEX_LABELS = [
+const DEFAULT_INDEX_LABELS = [
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'a', 'b', 'c', 'd', 'e', 'f',
];
-var CandidateArea = GObject.registerClass({
+const CandidateArea = GObject.registerClass({
Signals: {
'candidate-clicked': {
param_types: [
}
});
-var CandidatePopup = GObject.registerClass(
+export const CandidatePopup = GObject.registerClass(
class IbusCandidatePopup extends BoxPointer.BoxPointer {
_init() {
super._init(St.Side.TOP);
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported BaseIcon, IconGrid, IconGridLayout */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const Params = imports.misc.params;
-const Main = imports.ui.main;
+import * as Params from '../misc/params.js';
+import * as Main from './main.js';
-var ICON_SIZE = 96;
+const ICON_SIZE = 96;
-var PAGE_SWITCH_TIME = 300;
+const PAGE_SWITCH_TIME = 300;
/** @enum {number} */
-var IconSize = {
+const IconSize = {
LARGE: 96,
MEDIUM: 64,
MEDIUM_SMALL: 48,
TINY: 16,
};
-var APPICON_ANIMATION_OUT_SCALE = 3;
-var APPICON_ANIMATION_OUT_TIME = 250;
+const APPICON_ANIMATION_OUT_SCALE = 3;
+const APPICON_ANIMATION_OUT_TIME = 250;
const ICON_POSITION_DELAY = 10;
},
];
-var LEFT_DIVIDER_LEEWAY = 20;
-var RIGHT_DIVIDER_LEEWAY = 20;
+const LEFT_DIVIDER_LEEWAY = 20;
+const RIGHT_DIVIDER_LEEWAY = 20;
/** @enum {number} */
-var DragLocation = {
+export const DragLocation = {
INVALID: 0,
START_EDGE: 1,
ON_ICON: 2,
EMPTY_SPACE: 4,
};
-var BaseIcon = GObject.registerClass(
+export const BaseIcon = GObject.registerClass(
class BaseIcon extends Shell.SquareBin {
_init(label, params) {
params = Params.parse(params, {
return length - value - 1;
}
-var IconGridLayout = GObject.registerClass({
+export const IconGridLayout = GObject.registerClass({
Properties: {
'allow-incomplete-pages': GObject.ParamSpec.boolean('allow-incomplete-pages',
'Allow incomplete pages', 'Allow incomplete pages',
}
});
-var IconGrid = GObject.registerClass({
+export const IconGrid = GObject.registerClass({
Signals: {
'pages-changed': {},
},
-/* exported InhibitShortcutsDialog */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Dialog = imports.ui.dialog;
-const ModalDialog = imports.ui.modalDialog;
-const PermissionStore = imports.misc.permissionStore;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Dialog from './dialog.js';
+import * as ModalDialog from './modalDialog.js';
+import * as PermissionStore from '../misc/permissionStore.js';
const APP_ALLOWLIST = ['org.gnome.Settings.desktop'];
const APP_PERMISSIONS_TABLE = 'gnome';
const GRANTED = 'GRANTED';
const DENIED = 'DENIED';
-var DialogResponse = Meta.InhibitShortcutsDialogResponse;
+const DialogResponse = Meta.InhibitShortcutsDialogResponse;
-var InhibitShortcutsDialog = GObject.registerClass({
+export const InhibitShortcutsDialog = GObject.registerClass({
Implements: [Meta.InhibitShortcutsDialog],
Properties: {
'window': GObject.ParamSpec.override('window', Meta.InhibitShortcutsDialog),
imports._promiseNative.setMainLoopHook(() => {
// Queue starting the shell
GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
- imports.ui.main.start().catch(e => {
+ import('./main.js').then(main => main.start()).catch(e => {
const error = new GLib.Error(
Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED,
e.message);
-/* exported KbdA11yDialog */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
-const Dialog = imports.ui.dialog;
-const ModalDialog = imports.ui.modalDialog;
+import * as Dialog from './dialog.js';
+import * as ModalDialog from './modalDialog.js';
const KEYBOARD_A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
const KEY_STICKY_KEYS_ENABLED = 'stickykeys-enable';
const KEY_SLOW_KEYS_ENABLED = 'slowkeys-enable';
-var KbdA11yDialog = GObject.registerClass(
+export const KbdA11yDialog = GObject.registerClass(
class KbdA11yDialog extends GObject.Object {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported KeyboardManager */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Graphene = imports.gi.Graphene;
-const IBus = imports.gi.IBus;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Signals = imports.misc.signals;
-
-const EdgeDragAction = imports.ui.edgeDragAction;
-const InputSourceManager = imports.ui.status.keyboard;
-const IBusManager = imports.misc.ibusManager;
-const BoxPointer = imports.ui.boxpointer;
-const Main = imports.ui.main;
-const PageIndicators = imports.ui.pageIndicators;
-const PopupMenu = imports.ui.popupMenu;
-const SwipeTracker = imports.ui.swipeTracker;
-
-var KEYBOARD_ANIMATION_TIME = 150;
-var KEYBOARD_REST_TIME = KEYBOARD_ANIMATION_TIME * 2;
-var KEY_LONG_PRESS_TIME = 250;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Graphene from 'gi://Graphene';
+import IBus from 'gi://IBus';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import * as Signals from '../misc/signals.js';
+
+import * as EdgeDragAction from './edgeDragAction.js';
+import * as InputSourceManager from './status/keyboard.js';
+import * as IBusManager from '../misc/ibusManager.js';
+import * as BoxPointer from './boxpointer.js';
+import * as Main from './main.js';
+import * as PageIndicators from './pageIndicators.js';
+import * as PopupMenu from './popupMenu.js';
+import * as SwipeTracker from './swipeTracker.js';
+
+const KEYBOARD_ANIMATION_TIME = 150;
+const KEYBOARD_REST_TIME = KEYBOARD_ANIMATION_TIME * 2;
+const KEY_LONG_PRESS_TIME = 250;
const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
const SHOW_KEYBOARD = 'screen-keyboard-enabled';
const KEY_RELEASE_TIMEOUT = 50;
const BACKSPACE_WORD_DELETE_THRESHOLD = 50;
-var AspectContainer = GObject.registerClass(
+const AspectContainer = GObject.registerClass(
class AspectContainer extends St.Widget {
_init(params) {
super._init(params);
}
});
-var KeyContainer = GObject.registerClass(
+const KeyContainer = GObject.registerClass(
class KeyContainer extends St.Widget {
_init() {
const gridLayout = new Clutter.GridLayout({
}
});
-var Suggestions = GObject.registerClass(
+const Suggestions = GObject.registerClass(
class Suggestions extends St.BoxLayout {
_init() {
super._init({
}
});
-var LanguageSelectionPopup = class extends PopupMenu.PopupMenu {
+class LanguageSelectionPopup extends PopupMenu.PopupMenu {
constructor(actor) {
super(actor, 0.5, St.Side.BOTTOM);
this.sourceActor.disconnectObject(this);
super.destroy();
}
-};
+}
-var Key = GObject.registerClass({
+const Key = GObject.registerClass({
Signals: {
'long-press': {},
'pressed': {},
}
});
-var KeyboardModel = class {
+class KeyboardModel {
constructor(groupName) {
let names = [groupName];
if (groupName.includes('+'))
getKeysForLevel(levelName) {
return this._model.levels.find(level => level == levelName);
}
-};
+}
-var FocusTracker = class extends Signals.EventEmitter {
+class FocusTracker extends Signals.EventEmitter {
constructor() {
super();
return rect;
}
-};
+}
-var EmojiPager = GObject.registerClass({
+const EmojiPager = GObject.registerClass({
Properties: {
'delta': GObject.ParamSpec.int(
'delta', 'delta', 'delta',
}
});
-var EmojiSelection = GObject.registerClass({
+const EmojiSelection = GObject.registerClass({
Signals: {
'emoji-selected': { param_types: [GObject.TYPE_STRING] },
'close-request': {},
}
});
-var Keypad = GObject.registerClass({
+const Keypad = GObject.registerClass({
Signals: {
'keyval': { param_types: [GObject.TYPE_UINT] },
},
}
});
-var KeyboardManager = class extends Signals.EventEmitter {
+export class KeyboardManager extends Signals.EventEmitter {
constructor() {
super();
return false;
}
-};
+}
-var Keyboard = GObject.registerClass({
+export const Keyboard = GObject.registerClass({
Signals: {
'visibility-changed': {},
},
}
});
-var KeyboardController = class extends Signals.EventEmitter {
+class KeyboardController extends Signals.EventEmitter {
constructor() {
super();
this._virtualDevice.notify_keyval(Clutter.get_current_event_time() * 1000,
keyval, Clutter.KeyState.RELEASED);
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported MonitorConstraint, LayoutManager */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Signals = imports.misc.signals;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import * as Signals from '../misc/signals.js';
-const Background = imports.ui.background;
-const BackgroundMenu = imports.ui.backgroundMenu;
+import * as Background from './background.js';
+import * as BackgroundMenu from './backgroundMenu.js';
-const DND = imports.ui.dnd;
-const Main = imports.ui.main;
-const Params = imports.misc.params;
-const Ripples = imports.ui.ripples;
+import * as DND from './dnd.js';
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
+import * as Ripples from './ripples.js';
-var STARTUP_ANIMATION_TIME = 500;
-var BACKGROUND_FADE_ANIMATION_TIME = 1000;
+const STARTUP_ANIMATION_TIME = 500;
+const BACKGROUND_FADE_ANIMATION_TIME = 1000;
-var HOT_CORNER_PRESSURE_THRESHOLD = 100; // pixels
-var HOT_CORNER_PRESSURE_TIMEOUT = 1000; // ms
+const HOT_CORNER_PRESSURE_THRESHOLD = 100; // pixels
+const HOT_CORNER_PRESSURE_TIMEOUT = 1000; // ms
const SCREEN_TRANSITION_DELAY = 250; // ms
const SCREEN_TRANSITION_DURATION = 500; // ms
}
}
-var MonitorConstraint = GObject.registerClass({
+export const MonitorConstraint = GObject.registerClass({
Properties: {
'primary': GObject.ParamSpec.boolean('primary',
'Primary', 'Track primary monitor',
}
});
-var Monitor = class Monitor {
+class Monitor {
constructor(index, geometry, geometryScale) {
this.index = index;
this.x = geometry.x;
get inFullscreen() {
return global.display.get_monitor_in_fullscreen(this.index);
}
-};
+}
const UiActor = GObject.registerClass(
class UiActor extends St.Widget {
affectsInputRegion: true,
};
-var LayoutManager = GObject.registerClass({
+export const LayoutManager = GObject.registerClass({
Signals: {
'hot-corners-changed': {},
'startup-complete': {},
//
// This class manages a "hot corner" that can toggle switching to
// overview.
-var HotCorner = GObject.registerClass(
+export const HotCorner = GObject.registerClass(
class HotCorner extends Clutter.Actor {
_init(layoutManager, monitor, x, y) {
super._init();
}
});
-var PressureBarrier = class PressureBarrier extends Signals.EventEmitter {
+class PressureBarrier extends Signals.EventEmitter {
constructor(threshold, timeout, actionMode) {
super();
if (this._currentPressure >= this._threshold)
this._trigger();
}
-};
+}
-var ScreenTransition = GObject.registerClass(
+const ScreenTransition = GObject.registerClass(
class ScreenTransition extends Clutter.Actor {
_init() {
super._init({ visible: false });
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Lightbox */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const Params = imports.misc.params;
+import * as Params from '../misc/params.js';
-var DEFAULT_FADE_FACTOR = 0.4;
-var VIGNETTE_BRIGHTNESS = 0.5;
-var VIGNETTE_SHARPNESS = 0.7;
+export const DEFAULT_FADE_FACTOR = 0.4;
+export const VIGNETTE_BRIGHTNESS = 0.5;
+export const VIGNETTE_SHARPNESS = 0.7;
const VIGNETTE_DECLARATIONS = ' \
uniform float brightness; \n\
cogl_color_out.a += (rand(position) - 0.5) / 100.0; \n';
-var RadialShaderEffect = GObject.registerClass({
+const RadialShaderEffect = GObject.registerClass({
Properties: {
'brightness': GObject.ParamSpec.float(
'brightness', 'brightness', 'brightness',
/**
* Lightbox:
*/
-var Lightbox = GObject.registerClass({
+export const Lightbox = GObject.registerClass({
Properties: {
'active': GObject.ParamSpec.boolean(
'active', 'active', 'active', GObject.ParamFlags.READABLE, false),
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported LocatePointer */
-const Gio = imports.gi.Gio;
-const Ripples = imports.ui.ripples;
-const Main = imports.ui.main;
+import Gio from 'gi://Gio';
+import * as Ripples from './ripples.js';
+import * as Main from './main.js';
-const LOCATE_POINTER_KEY = "locate-pointer";
-const LOCATE_POINTER_SCHEMA = "org.gnome.desktop.interface";
+const LOCATE_POINTER_KEY = 'locate-pointer';
+const LOCATE_POINTER_SCHEMA = 'org.gnome.desktop.interface';
-var LocatePointer = class {
+export class LocatePointer {
constructor() {
this._settings = new Gio.Settings({ schema_id: LOCATE_POINTER_SCHEMA });
this._settings.connect(`changed::${LOCATE_POINTER_KEY}`, () => this._syncEnabled());
let [x, y] = global.get_pointer();
this._ripples.playAnimation(x, y);
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported LookingGlass */
-
-const Clutter = imports.gi.Clutter;
-const Cogl = imports.gi.Cogl;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Graphene = imports.gi.Graphene;
-const Meta = imports.gi.Meta;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Signals = imports.misc.signals;
-const System = imports.system;
-
-const History = imports.misc.history;
-const ExtensionUtils = imports.misc.extensionUtils;
-const PopupMenu = imports.ui.popupMenu;
-const ShellEntry = imports.ui.shellEntry;
-const Main = imports.ui.main;
-const JsParse = imports.misc.jsParse;
-
-const { ExtensionState } = ExtensionUtils;
+
+import Clutter from 'gi://Clutter';
+import Cogl from 'gi://Cogl';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Graphene from 'gi://Graphene';
+import Meta from 'gi://Meta';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import * as Signals from '../misc/signals.js';
+import System from 'system';
+
+import * as History from '../misc/history.js';
+import {ExtensionState} from '../misc/extensionUtils.js';
+import * as PopupMenu from './popupMenu.js';
+import * as ShellEntry from './shellEntry.js';
+import * as Main from './main.js';
+import * as JsParse from '../misc/jsParse.js';
const CHEVRON = '>>> ';
/* Imports...feel free to add here as needed */
const commandHeader = `
const {Clutter, Gio, GLib, GObject, Meta, Shell, St} = imports.gi;
- const Main = await imports.ui.main;
+ const Main = await import('resource:///org/gnome/shell/ui/main.js');
/* Utility functions...we should probably be able to use these
* in the shell core code too. */
const HISTORY_KEY = 'looking-glass-history';
// Time between tabs for them to count as a double-tab event
-var AUTO_COMPLETE_DOUBLE_TAB_DELAY = 500;
-var AUTO_COMPLETE_SHOW_COMPLETION_ANIMATION_DURATION = 200;
-var AUTO_COMPLETE_GLOBAL_KEYWORDS = _getAutoCompleteGlobalKeywords();
+
+const AUTO_COMPLETE_DOUBLE_TAB_DELAY = 500;
+const AUTO_COMPLETE_SHOW_COMPLETION_ANIMATION_DURATION = 200;
+const AUTO_COMPLETE_GLOBAL_KEYWORDS = _getAutoCompleteGlobalKeywords();
const LG_ANIMATION_TIME = 500;
return keywords.concat(windowProperties).concat(headerProperties);
}
-var AutoComplete = class AutoComplete extends Signals.EventEmitter {
+class AutoComplete extends Signals.EventEmitter {
constructor(entry) {
super();
this._entry.clutter_text.insert_text(additionalCompletionText, cursorPos);
}
-};
-
+}
-var Notebook = GObject.registerClass({
+const Notebook = GObject.registerClass({
Signals: { 'selection': { param_types: [Clutter.Actor.$gtype] } },
}, class Notebook extends St.BoxLayout {
_init() {
}
}
-var ObjLink = GObject.registerClass(
+const ObjLink = GObject.registerClass(
class ObjLink extends St.Button {
_init(lookingGlass, o, title) {
let text;
}
});
-var Result = GObject.registerClass(
+const Result = GObject.registerClass(
class Result extends St.BoxLayout {
_init(lookingGlass, command, o, index) {
super._init({ vertical: true });
}
});
-var WindowList = GObject.registerClass({
+const WindowList = GObject.registerClass({
}, class WindowList extends St.BoxLayout {
_init(lookingGlass) {
super._init({ name: 'Windows', vertical: true, style: 'spacing: 8px' });
}
});
-var ObjInspector = GObject.registerClass(
+const ObjInspector = GObject.registerClass(
class ObjInspector extends St.ScrollView {
_init(lookingGlass) {
super._init({
}
});
-var RedBorderEffect = GObject.registerClass(
+const RedBorderEffect = GObject.registerClass(
class RedBorderEffect extends Clutter.Effect {
_init() {
super._init();
}
});
-var Inspector = GObject.registerClass({
+const Inspector = GObject.registerClass({
Signals: {
'closed': {},
'target': { param_types: [Clutter.Actor.$gtype, GObject.TYPE_DOUBLE, GObject.TYPE_DOUBLE] },
}
});
-var Extensions = GObject.registerClass({
+const Extensions = GObject.registerClass({
}, class Extensions extends St.BoxLayout {
_init(lookingGlass) {
super._init({ vertical: true, name: 'lookingGlassExtensions' });
});
-var ActorLink = GObject.registerClass({
+const ActorLink = GObject.registerClass({
Signals: {
'inspect-actor': {},
},
}
});
-var ActorTreeViewer = GObject.registerClass(
+const ActorTreeViewer = GObject.registerClass(
class ActorTreeViewer extends St.BoxLayout {
_init(lookingGlass) {
super._init();
}
});
-var DebugFlag = GObject.registerClass({
+const DebugFlag = GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
}, class DebugFlag extends St.Button {
_init(label) {
});
-var ClutterDebugFlag = GObject.registerClass(
+const ClutterDebugFlag = GObject.registerClass(
class ClutterDebugFlag extends DebugFlag {
_init(categoryName, flagName) {
super._init(flagName);
}
});
-var MutterPaintDebugFlag = GObject.registerClass(
+const MutterPaintDebugFlag = GObject.registerClass(
class MutterPaintDebugFlag extends DebugFlag {
_init(flagName) {
super._init(flagName);
}
});
-var MutterTopicDebugFlag = GObject.registerClass(
+const MutterTopicDebugFlag = GObject.registerClass(
class MutterTopicDebugFlag extends DebugFlag {
_init(flagName) {
super._init(flagName);
}
});
-var UnsafeModeDebugFlag = GObject.registerClass(
+const UnsafeModeDebugFlag = GObject.registerClass(
class UnsafeModeDebugFlag extends DebugFlag {
_init() {
super._init('unsafe-mode');
}
});
-var DebugFlags = GObject.registerClass(
+const DebugFlags = GObject.registerClass(
class DebugFlags extends St.BoxLayout {
_init() {
super._init({
});
-var LookingGlass = GObject.registerClass(
+export const LookingGlass = GObject.registerClass(
class LookingGlass extends St.BoxLayout {
_init() {
super._init({
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Magnifier */
-
-const Atspi = imports.gi.Atspi;
-const Clutter = imports.gi.Clutter;
-const GDesktopEnums = imports.gi.GDesktopEnums;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Signals = imports.misc.signals;
-
-const Background = imports.ui.background;
-const FocusCaretTracker = imports.ui.focusCaretTracker;
-const Main = imports.ui.main;
-const Params = imports.misc.params;
-const PointerWatcher = imports.ui.pointerWatcher;
-
-var CROSSHAIRS_CLIP_SIZE = [100, 100];
-var NO_CHANGE = 0.0;
-
-var POINTER_REST_TIME = 1000; // milliseconds
+
+import Atspi from 'gi://Atspi';
+import Clutter from 'gi://Clutter';
+import GDesktopEnums from 'gi://GDesktopEnums';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import * as Signals from '../misc/signals.js';
+
+import * as Background from './background.js';
+import * as FocusCaretTracker from './focusCaretTracker.js';
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
+import * as PointerWatcher from './pointerWatcher.js';
+
+const CROSSHAIRS_CLIP_SIZE = [100, 100];
+const NO_CHANGE = 0.0;
+
+const POINTER_REST_TIME = 1000; // milliseconds
// Settings
const MAGNIFIER_SCHEMA = 'org.gnome.desktop.a11y.magnifier';
const CROSS_HAIRS_LENGTH_KEY = 'cross-hairs-length';
const CROSS_HAIRS_CLIP_KEY = 'cross-hairs-clip';
-var MouseSpriteContent = GObject.registerClass({
+const MouseSpriteContent = GObject.registerClass({
Implements: [Clutter.Content],
}, class MouseSpriteContent extends GObject.Object {
_init() {
}
});
-var Magnifier = class Magnifier extends Signals.EventEmitter {
+export class Magnifier extends Signals.EventEmitter {
constructor() {
super();
this._zoomRegions[0].setContrast(contrast);
}
}
-};
+}
-var ZoomRegion = class ZoomRegion {
+class ZoomRegion {
constructor(magnifier, mouseSourceActor) {
this._magnifier = magnifier;
this._focusCaretTracker = new FocusCaretTracker.FocusCaretTracker();
}
}
-var Crosshairs = GObject.registerClass(
+const Crosshairs = GObject.registerClass(
class Crosshairs extends Clutter.Actor {
_init() {
// Set the group containing the crosshairs to three times the desktop
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported componentManager, notificationDaemon, windowAttentionHandler,
- ctrlAltTabManager, padOsdService, osdWindowManager,
- osdMonitorLabeler, shellMountOpDBusService, shellDBusService,
- shellAccessDialogDBusService, shellAudioSelectionDBusService,
- screenSaverDBus, uiGroup, magnifier, xdndHandler, keyboard,
- kbdA11yDialog, introspectService, start, pushModal, popModal,
- activateWindow, moveWindowToMonitorAndWorkspace,
- createLookingGlass, initializeDeferredWork,
- getStyleVariant, getThemeStylesheet, setThemeStylesheet, screenshotUI */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const AccessDialog = imports.ui.accessDialog;
-const AudioDeviceSelection = imports.ui.audioDeviceSelection;
-const Components = imports.ui.components;
-const CtrlAltTab = imports.ui.ctrlAltTab;
-const EndSessionDialog = imports.ui.endSessionDialog;
-const ExtensionSystem = imports.ui.extensionSystem;
-const ExtensionDownloader = imports.ui.extensionDownloader;
-const InputMethod = imports.misc.inputMethod;
-const Introspect = imports.misc.introspect;
-const Keyboard = imports.ui.keyboard;
-const MessageTray = imports.ui.messageTray;
-const ModalDialog = imports.ui.modalDialog;
-const OsdWindow = imports.ui.osdWindow;
-const OsdMonitorLabeler = imports.ui.osdMonitorLabeler;
-const Overview = imports.ui.overview;
-const PadOsd = imports.ui.padOsd;
-const Panel = imports.ui.panel;
-const Params = imports.misc.params;
-const RunDialog = imports.ui.runDialog;
-const WelcomeDialog = imports.ui.welcomeDialog;
-const Layout = imports.ui.layout;
-const LoginManager = imports.misc.loginManager;
-const LookingGlass = imports.ui.lookingGlass;
-const NotificationDaemon = imports.ui.notificationDaemon;
-const WindowAttentionHandler = imports.ui.windowAttentionHandler;
-const Screenshot = imports.ui.screenshot;
-const ScreenShield = imports.ui.screenShield;
-const SessionMode = imports.ui.sessionMode;
-const ShellDBus = imports.ui.shellDBus;
-const ShellMountOperation = imports.ui.shellMountOperation;
-const WindowManager = imports.ui.windowManager;
-const Magnifier = imports.ui.magnifier;
-const XdndHandler = imports.ui.xdndHandler;
-const KbdA11yDialog = imports.ui.kbdA11yDialog;
-const LocatePointer = imports.ui.locatePointer;
-const PointerA11yTimeout = imports.ui.pointerA11yTimeout;
-const ParentalControlsManager = imports.misc.parentalControlsManager;
+
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as AccessDialog from './accessDialog.js';
+import * as AudioDeviceSelection from './audioDeviceSelection.js';
+import * as Components from './components.js';
+import * as CtrlAltTab from './ctrlAltTab.js';
+import * as EndSessionDialog from './endSessionDialog.js';
+import * as ExtensionSystem from './extensionSystem.js';
+import * as ExtensionDownloader from './extensionDownloader.js';
+import * as InputMethod from '../misc/inputMethod.js';
+import * as Introspect from '../misc/introspect.js';
+import * as Keyboard from './keyboard.js';
+import * as MessageTray from './messageTray.js';
+import * as ModalDialog from './modalDialog.js';
+import * as OsdWindow from './osdWindow.js';
+import * as OsdMonitorLabeler from './osdMonitorLabeler.js';
+import * as Overview from './overview.js';
+import * as PadOsd from './padOsd.js';
+import * as Panel from './panel.js';
+import * as Params from '../misc/params.js';
+import * as RunDialog from './runDialog.js';
+import * as WelcomeDialog from './welcomeDialog.js';
+import * as Layout from './layout.js';
+import * as LoginManager from '../misc/loginManager.js';
+import * as LookingGlass from './lookingGlass.js';
+import * as NotificationDaemon from './notificationDaemon.js';
+import * as WindowAttentionHandler from './windowAttentionHandler.js';
+import * as Screenshot from './screenshot.js';
+import * as ScreenShield from './screenShield.js';
+import * as SessionMode from './sessionMode.js';
+import * as ShellDBus from './shellDBus.js';
+import * as ShellMountOperation from './shellMountOperation.js';
+import * as WindowManager from './windowManager.js';
+import * as Magnifier from './magnifier.js';
+import * as XdndHandler from './xdndHandler.js';
+import * as KbdA11yDialog from './kbdA11yDialog.js';
+import * as LocatePointer from './locatePointer.js';
+import * as PointerA11yTimeout from './pointerA11yTimeout.js';
+import * as ParentalControlsManager from '../misc/parentalControlsManager.js';
const Config = imports.misc.config;
-const Util = imports.misc.util;
+import * as Util from '../misc/util.js';
const WELCOME_DIALOG_LAST_SHOWN_VERSION = 'welcome-dialog-last-shown-version';
// Make sure to mention the point release, otherwise it will show every time
const LOG_DOMAIN = 'GNOME Shell';
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
-var componentManager = null;
-var extensionManager = null;
-var panel = null;
-var overview = null;
-var runDialog = null;
-var lookingGlass = null;
-var welcomeDialog = null;
-var wm = null;
-var messageTray = null;
-var screenShield = null;
-var notificationDaemon = null;
-var windowAttentionHandler = null;
-var ctrlAltTabManager = null;
-var padOsdService = null;
-var osdWindowManager = null;
-var osdMonitorLabeler = null;
-var sessionMode = null;
-var screenshotUI = null;
-var shellAccessDialogDBusService = null;
-var shellAudioSelectionDBusService = null;
-var shellDBusService = null;
-var shellMountOpDBusService = null;
-var screenSaverDBus = null;
-var modalCount = 0;
-var actionMode = Shell.ActionMode.NONE;
-var modalActorFocusStack = [];
-var uiGroup = null;
-var magnifier = null;
-var xdndHandler = null;
-var keyboard = null;
-var layoutManager = null;
-var kbdA11yDialog = null;
-var inputMethod = null;
-var introspectService = null;
-var locatePointer = null;
+export let componentManager = null;
+export let extensionManager = null;
+export let panel = null;
+export let overview = null;
+export let runDialog = null;
+export let lookingGlass = null;
+export let welcomeDialog = null;
+export let wm = null;
+export let messageTray = null;
+export let screenShield = null;
+export let notificationDaemon = null;
+export let windowAttentionHandler = null;
+export let ctrlAltTabManager = null;
+export let padOsdService = null;
+export let osdWindowManager = null;
+export let osdMonitorLabeler = null;
+export let sessionMode = null;
+export let screenshotUI = null;
+export let shellAccessDialogDBusService = null;
+export let shellAudioSelectionDBusService = null;
+export let shellDBusService = null;
+export let shellMountOpDBusService = null;
+export let screenSaverDBus = null;
+export let modalCount = 0;
+export let actionMode = Shell.ActionMode.NONE;
+export let modalActorFocusStack = [];
+export let uiGroup = null;
+export let magnifier = null;
+export let xdndHandler = null;
+export let keyboard = null;
+export let layoutManager = null;
+export let kbdA11yDialog = null;
+export let inputMethod = null;
+export let introspectService = null;
+export let locatePointer = null;
+
let _startDate;
let _defaultCssStylesheet = null;
let _cssStylesheet = null;
}
/** @returns {void} */
-async function start() {
+export async function start() {
globalThis.log = console.log;
// Chain up async errors reported from C
}
/** @returns {string} */
-function getStyleVariant() {
+export function getStyleVariant() {
const {colorScheme} = St.Settings.get();
switch (sessionMode.colorScheme) {
case 'force-dark':
* @returns {?Gio.File}: A #GFile that contains the theme CSS,
* null if using the default
*/
-function getThemeStylesheet() {
+export function getThemeStylesheet() {
return _cssStylesheet;
}
*
* Set the theme CSS file that the shell will load
*/
-function setThemeStylesheet(cssStylesheet) {
+export function setThemeStylesheet(cssStylesheet) {
_cssStylesheet = cssStylesheet ? Gio.File.new_for_path(cssStylesheet) : null;
}
-function reloadThemeResource() {
+export function reloadThemeResource() {
if (_themeResource)
_themeResource._unregister();
*
* Reloads the theme CSS file
*/
-function loadTheme() {
+export function loadTheme() {
let themeContext = St.ThemeContext.get_for_stage(global.stage);
let previousTheme = themeContext.get_theme();
* @param {string} msg A message
* @param {string} details Additional information
*/
-function notify(msg, details) {
+export function notify(msg, details) {
let source = new MessageTray.SystemNotificationSource();
messageTray.add(source);
let notification = new MessageTray.Notification(source, msg, details);
*
* See shell_global_notify_problem().
*/
-function notifyError(msg, details) {
+export function notifyError(msg, details) {
// Also print to stderr so it's logged somewhere
if (details)
console.warn(`error: ${msg}: ${details}`);
*
* @returns {Clutter.Grab}: the grab handle created
*/
-function pushModal(actor, params) {
+export function pushModal(actor, params) {
params = Params.parse(params, {
timestamp: global.get_current_time(),
options: 0,
* initiated event. If not provided then the value of
* global.get_current_time() is assumed.
*/
-function popModal(grab, timestamp) {
+export function popModal(grab, timestamp) {
if (timestamp == undefined)
timestamp = global.get_current_time();
*
* @returns {LookingGlass.LookingGlass}
*/
-function createLookingGlass() {
+export function createLookingGlass() {
if (lookingGlass == null)
lookingGlass = new LookingGlass.LookingGlass();
/**
* Opens the run dialog
*/
-function openRunDialog() {
+export function openRunDialog() {
if (runDialog == null)
runDialog = new RunDialog.RunDialog();
runDialog.open();
}
-function openWelcomeDialog() {
+export function openWelcomeDialog() {
if (welcomeDialog === null)
welcomeDialog = new WelcomeDialog.WelcomeDialog();
* Activates @window, switching to its workspace first if necessary,
* and switching out of the overview if it's currently active
*/
-function activateWindow(window, time, workspaceNum) {
+export function activateWindow(window, time, workspaceNum) {
let workspaceManager = global.workspace_manager;
let activeWorkspaceNum = workspaceManager.get_active_workspace_index();
let windowWorkspaceNum = workspaceNum !== undefined ? workspaceNum : window.get_workspace().index();
* @param {number} workspaceIndex - the requested workspace
* @param {bool} append - create workspace if it doesn't exist
*/
-function moveWindowToMonitorAndWorkspace(window, monitorIndex, workspaceIndex, append = false) {
+export function moveWindowToMonitorAndWorkspace(window, monitorIndex, workspaceIndex, append = false) {
// We need to move the window before changing the workspace, because
// the move itself could cause a workspace change if the window enters
// the primary monitor
// TODO - replace this timeout with some system to guess when the user might
// be e.g. just reading the screen and not likely to interact.
-var DEFERRED_TIMEOUT_SECONDS = 20;
-var _deferredWorkData = {};
+const DEFERRED_TIMEOUT_SECONDS = 20;
+let _deferredWorkData = {};
// Work scheduled for some point in the future
-var _deferredWorkQueue = [];
+let _deferredWorkQueue = [];
// Work we need to process before the next redraw
-var _beforeRedrawQueue = [];
+let _beforeRedrawQueue = [];
// Counter to assign work ids
-var _deferredWorkSequence = 0;
-var _deferredTimeoutId = 0;
+let _deferredWorkSequence = 0;
+let _deferredTimeoutId = 0;
function _runDeferredWork(workId) {
if (!_deferredWorkData[workId])
*
* @returns {string}: A string work identifier
*/
-function initializeDeferredWork(actor, callback) {
+export function initializeDeferredWork(actor, callback) {
// Turn into a string so we can use as an object property
let workId = `${++_deferredWorkSequence}`;
_deferredWorkData[workId] = {
* for example when data being displayed by the actor has
* changed.
*/
-function queueDeferredWork(workId) {
+export function queueDeferredWork(workId) {
let data = _deferredWorkData[workId];
if (!data) {
let message = `Invalid work id ${workId}`;
}
}
-var RestartMessage = GObject.registerClass(
+const RestartMessage = GObject.registerClass(
class RestartMessage extends ModalDialog.ModalDialog {
_init(message) {
super._init({
restartMessage.open();
}
-var AnimationsSettings = class {
+class AnimationsSettings {
constructor() {
this._animationsEnabled = true;
this._handles = new Set();
this._syncAnimationsEnabled();
handle.connect('stopped', this._onRemoteAccessHandleStopped.bind(this));
}
-};
+}
-/* exported MessageListSection */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Graphene = imports.gi.Graphene;
-const Meta = imports.gi.Meta;
-const Pango = imports.gi.Pango;
-const St = imports.gi.St;
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Graphene from 'gi://Graphene';
+import Meta from 'gi://Meta';
+import Pango from 'gi://Pango';
+import St from 'gi://St';
-const Util = imports.misc.util;
+import * as Main from './main.js';
+import * as MessageTray from './messageTray.js';
-var MESSAGE_ANIMATION_TIME = 100;
+import * as Util from '../misc/util.js';
-var DEFAULT_EXPAND_LINES = 6;
+const MESSAGE_ANIMATION_TIME = 100;
+
+const DEFAULT_EXPAND_LINES = 6;
/**
* @param {string} text
* @param {boolean} allowMarkup
* @returns {string}
*/
-function _fixMarkup(text, allowMarkup) {
+export function _fixMarkup(text, allowMarkup) {
if (allowMarkup) {
// Support &, ", ', < and >, escape all other
// occurrences of '&'.
return GLib.markup_escape_text(text, -1);
}
-var URLHighlighter = GObject.registerClass(
+export const URLHighlighter = GObject.registerClass(
class URLHighlighter extends St.Label {
_init(text = '', lineWrap, allowMarkup) {
super._init({
}
});
-var ScaleLayout = GObject.registerClass(
+const ScaleLayout = GObject.registerClass(
class ScaleLayout extends Clutter.BinLayout {
_init(params) {
this._container = null;
}
});
-var LabelExpanderLayout = GObject.registerClass({
+const LabelExpanderLayout = GObject.registerClass({
Properties: {
'expansion': GObject.ParamSpec.double('expansion',
'Expansion',
});
-var Message = GObject.registerClass({
+export const Message = GObject.registerClass({
Signals: {
'close': {},
'expanded': {},
}
});
-var MessageListSection = GObject.registerClass({
+export const MessageListSection = GObject.registerClass({
Properties: {
'can-clear': GObject.ParamSpec.boolean(
'can-clear', 'can-clear', 'can-clear',
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported NotificationPolicy, NotificationGenericPolicy,
- NotificationApplicationPolicy, Source, SourceActor,
- SystemNotificationSource, MessageTray */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Calendar = imports.ui.calendar;
-const GnomeSession = imports.misc.gnomeSession;
-const Layout = imports.ui.layout;
-const Main = imports.ui.main;
-const Params = imports.misc.params;
-const SignalTracker = imports.misc.signalTracker;
+
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Calendar from './calendar.js';
+import * as GnomeSession from '../misc/gnomeSession.js';
+import * as Layout from './layout.js';
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
+import * as SignalTracker from '../misc/signalTracker.js';
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
-var ANIMATION_TIME = 200;
-var NOTIFICATION_TIMEOUT = 4000;
+export const ANIMATION_TIME = 200;
+
+const NOTIFICATION_TIMEOUT = 4000;
-var HIDE_TIMEOUT = 200;
-var LONGER_HIDE_TIMEOUT = 600;
+const HIDE_TIMEOUT = 200;
+const LONGER_HIDE_TIMEOUT = 600;
-var MAX_NOTIFICATIONS_IN_QUEUE = 3;
-var MAX_NOTIFICATIONS_PER_SOURCE = 3;
-var MAX_NOTIFICATION_BUTTONS = 3;
+const MAX_NOTIFICATIONS_IN_QUEUE = 3;
+const MAX_NOTIFICATIONS_PER_SOURCE = 3;
+const MAX_NOTIFICATION_BUTTONS = 3;
// We delay hiding of the tray if the mouse is within MOUSE_LEFT_ACTOR_THRESHOLD
// range from the point where it left the tray.
-var MOUSE_LEFT_ACTOR_THRESHOLD = 20;
+const MOUSE_LEFT_ACTOR_THRESHOLD = 20;
-var IDLE_TIME = 1000;
+const IDLE_TIME = 1000;
-var State = {
+export const State = {
HIDDEN: 0,
SHOWING: 1,
SHOWN: 2,
// and REPLACED for notifications that were destroyed as a consequence of a
// newer version having replaced them.
/** @enum {number} */
-var NotificationDestroyedReason = {
+export const NotificationDestroyedReason = {
EXPIRED: 1,
DISMISSED: 2,
SOURCE_CLOSED: 3,
// through the notification daemon. HIGH urgency value is used for chats received
// through the Telepathy client.
/** @enum {number} */
-var Urgency = {
+export const Urgency = {
LOW: 0,
NORMAL: 1,
HIGH: 2,
// status) and hence the same for every user. This affects whether the content
// of a notification is shown on the lock screen.
/** @enum {number} */
-var PrivacyScope = {
+export const PrivacyScope = {
USER: 0,
SYSTEM: 1,
};
-var FocusGrabber = class FocusGrabber {
+class FocusGrabber {
constructor(actor) {
this._actor = actor;
this._prevKeyFocusActor = null;
global.stage.set_key_focus(null);
}
}
-};
+}
// NotificationPolicy:
// An object that holds all bits of configurable policy related to a notification
// source, such as whether to play sound or honour the critical bit.
//
// A notification without a policy object will inherit the default one.
-var NotificationPolicy = GObject.registerClass({
+export const NotificationPolicy = GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
Properties: {
'enable': GObject.ParamSpec.boolean(
}
});
-var NotificationGenericPolicy = GObject.registerClass({
+export const NotificationGenericPolicy = GObject.registerClass({
}, class NotificationGenericPolicy extends NotificationPolicy {
_init() {
super._init();
}
});
-var NotificationApplicationPolicy = GObject.registerClass({
+export const NotificationApplicationPolicy = GObject.registerClass({
}, class NotificationApplicationPolicy extends NotificationPolicy {
_init(id) {
super._init();
// @source allows playing sounds).
//
// [1] https://developer.gnome.org/notification-spec/#markup
-var Notification = GObject.registerClass({
+export const Notification = GObject.registerClass({
Properties: {
'acknowledged': GObject.ParamSpec.boolean(
'acknowledged', 'acknowledged', 'acknowledged',
});
SignalTracker.registerDestroyableType(Notification);
-var NotificationBanner = GObject.registerClass({
+export const NotificationBanner = GObject.registerClass({
Signals: {
'done-displaying': {},
'unfocused': {},
}
});
-var SourceActor = GObject.registerClass(
+export const SourceActor = GObject.registerClass(
class SourceActor extends St.Widget {
_init(source, size) {
super._init();
}
});
-var Source = GObject.registerClass({
+export const Source = GObject.registerClass({
Properties: {
'count': GObject.ParamSpec.int(
'count', 'count', 'count',
});
SignalTracker.registerDestroyableType(Source);
-var MessageTray = GObject.registerClass({
+export const MessageTray = GObject.registerClass({
Signals: {
'queue-changed': {},
'source-added': { param_types: [Source.$gtype] },
}
});
-var SystemNotificationSource = GObject.registerClass(
+export const SystemNotificationSource = GObject.registerClass(
class SystemNotificationSource extends Source {
_init() {
super._init(_("System Information"), 'dialog-information-symbolic');
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ModalDialog */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const Dialog = imports.ui.dialog;
-const Layout = imports.ui.layout;
-const Lightbox = imports.ui.lightbox;
-const Main = imports.ui.main;
-const Params = imports.misc.params;
+import * as Dialog from './dialog.js';
+import * as Layout from './layout.js';
+import * as Lightbox from './lightbox.js';
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
-var OPEN_AND_CLOSE_TIME = 100;
-var FADE_OUT_DIALOG_TIME = 1000;
+const OPEN_AND_CLOSE_TIME = 100;
+const FADE_OUT_DIALOG_TIME = 1000;
/** @enum {number} */
-var State = {
+export const State = {
OPENED: 0,
CLOSED: 1,
OPENING: 2,
FADED_OUT: 4,
};
-var ModalDialog = GObject.registerClass({
+export const ModalDialog = GObject.registerClass({
Properties: {
'state': GObject.ParamSpec.int('state', 'Dialog state', 'state',
GObject.ParamFlags.READABLE,
-/* exported MediaSection */
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Signals = imports.misc.signals;
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import * as Signals from '../misc/signals.js';
-const Main = imports.ui.main;
-const MessageList = imports.ui.messageList;
+import * as Main from './main.js';
+import * as MessageList from './messageList.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../misc/fileUtils.js';
const DBusIface = loadInterfaceXML('org.freedesktop.DBus');
const DBusProxy = Gio.DBusProxy.makeProxyWrapper(DBusIface);
const MPRIS_PLAYER_PREFIX = 'org.mpris.MediaPlayer2.';
-var MediaMessage = GObject.registerClass(
+export const MediaMessage = GObject.registerClass(
class MediaMessage extends MessageList.Message {
_init(player) {
super._init('', '');
}
});
-var MprisPlayer = class MprisPlayer extends Signals.EventEmitter {
+export class MprisPlayer extends Signals.EventEmitter {
constructor(busName) {
super();
this.emit('hide');
}
}
-};
+}
-var MediaSection = GObject.registerClass(
+export const MediaSection = GObject.registerClass(
class MediaSection extends MessageList.MessageListSection {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported NotificationDaemon */
-const GdkPixbuf = imports.gi.GdkPixbuf;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import GdkPixbuf from 'gi://GdkPixbuf';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
const Config = imports.misc.config;
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
-const Params = imports.misc.params;
+import * as Main from './main.js';
+import * as MessageTray from './messageTray.js';
+import * as Params from '../misc/params.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../misc/fileUtils.js';
const FdoNotificationsIface = loadInterfaceXML('org.freedesktop.Notifications');
/** @enum {number} */
-var NotificationClosedReason = {
+const NotificationClosedReason = {
EXPIRED: 1,
DISMISSED: 2,
APP_CLOSED: 3,
};
/** @enum {number} */
-var Urgency = {
+const Urgency = {
LOW: 0,
NORMAL: 1,
CRITICAL: 2,
};
-var FdoNotificationDaemon = class FdoNotificationDaemon {
+class FdoNotificationDaemon {
constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(FdoNotificationsIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/Notifications');
this._dbusImpl.emit_signal('ActionInvoked',
GLib.Variant.new('(us)', [id, action]));
}
-};
+}
-var FdoNotificationDaemonSource = GObject.registerClass(
+const FdoNotificationDaemonSource = GObject.registerClass(
class FdoNotificationDaemonSource extends MessageTray.Source {
_init(title, pid, sender, appId) {
this.pid = pid;
urgent: MessageTray.Urgency.CRITICAL,
};
-var GtkNotificationDaemonNotification = GObject.registerClass(
+const GtkNotificationDaemonNotification = GObject.registerClass(
class GtkNotificationDaemonNotification extends MessageTray.Notification {
_init(source, notification) {
super._init(source);
function InvalidAppError() {}
-var GtkNotificationDaemonAppSource = GObject.registerClass(
+const GtkNotificationDaemonAppSource = GObject.registerClass(
class GtkNotificationDaemonAppSource extends MessageTray.Source {
_init(appId) {
let objectPath = objectPathFromAppId(appId);
const GtkNotificationsIface = loadInterfaceXML('org.gtk.Notifications');
-var GtkNotificationDaemon = class GtkNotificationDaemon {
+class GtkNotificationDaemon {
constructor() {
this._sources = {};
invocation.return_value(null);
}
-};
+}
-var NotificationDaemon = class NotificationDaemon {
+export class NotificationDaemon {
constructor() {
this._fdoNotificationDaemon = new FdoNotificationDaemon();
this._gtkNotificationDaemon = new GtkNotificationDaemon();
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported OsdMonitorLabeler */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import St from 'gi://St';
-const Main = imports.ui.main;
-var OsdMonitorLabel = GObject.registerClass(
+import * as Main from './main.js';
+
+const OsdMonitorLabel = GObject.registerClass(
class OsdMonitorLabel extends St.Widget {
_init(monitor, label) {
super._init({ x_expand: true, y_expand: true });
}
});
-var OsdMonitorLabeler = class {
+export class OsdMonitorLabeler {
constructor() {
this._monitorManager = global.backend.get_monitor_manager();
this._client = null;
this._reset();
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported OsdWindowManager */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import St from 'gi://St';
-const BarLevel = imports.ui.barLevel;
-const Layout = imports.ui.layout;
-const Main = imports.ui.main;
+import * as BarLevel from './barLevel.js';
+import * as Layout from './layout.js';
+import * as Main from './main.js';
-var HIDE_TIMEOUT = 1500;
-var FADE_TIME = 100;
-var LEVEL_ANIMATION_TIME = 100;
+const HIDE_TIMEOUT = 1500;
+const FADE_TIME = 100;
+const LEVEL_ANIMATION_TIME = 100;
-var OsdWindow = GObject.registerClass(
+export const OsdWindow = GObject.registerClass(
class OsdWindow extends Clutter.Actor {
_init(monitorIndex) {
super._init({
}
});
-var OsdWindowManager = class {
+export class OsdWindowManager {
constructor() {
this._osdWindows = [];
Main.layoutManager.connect('monitors-changed',
for (let i = 0; i < this._osdWindows.length; i++)
this._osdWindows[i].cancel();
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Overview, ANIMATION_TIME */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Signals = imports.misc.signals;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import * as Signals from '../misc/signals.js';
// Time for initial animation going into Overview mode;
// this is defined here to make it available in imports.
-var ANIMATION_TIME = 250;
+export const ANIMATION_TIME = 250;
-const DND = imports.ui.dnd;
-const LayoutManager = imports.ui.layout;
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
-const OverviewControls = imports.ui.overviewControls;
-const Params = imports.misc.params;
-const SwipeTracker = imports.ui.swipeTracker;
-const WindowManager = imports.ui.windowManager;
-const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
+import * as DND from './dnd.js';
+import * as LayoutManager from './layout.js';
+import * as Main from './main.js';
+import * as MessageTray from './messageTray.js';
+import * as OverviewControls from './overviewControls.js';
+import * as Params from '../misc/params.js';
+import * as SwipeTracker from './swipeTracker.js';
+import * as WindowManager from './windowManager.js';
+import * as WorkspaceThumbnail from './workspaceThumbnail.js';
-var DND_WINDOW_SWITCH_TIMEOUT = 750;
+const DND_WINDOW_SWITCH_TIMEOUT = 750;
-var OVERVIEW_ACTIVATION_TIMEOUT = 0.5;
+const OVERVIEW_ACTIVATION_TIMEOUT = 0.5;
-var ShellInfo = class {
+class ShellInfo {
constructor() {
this._source = null;
}
this._source.showNotification(notification);
}
-};
+}
-var OverviewActor = GObject.registerClass(
+const OverviewActor = GObject.registerClass(
class OverviewActor extends St.BoxLayout {
_init() {
super._init({
},
};
-var Overview = class extends Signals.EventEmitter {
+export class Overview extends Signals.EventEmitter {
constructor() {
super();
get searchEntry() {
return this._overview.searchEntry;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ControlsManager */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const AppDisplay = imports.ui.appDisplay;
-const Dash = imports.ui.dash;
-const Layout = imports.ui.layout;
-const Main = imports.ui.main;
-const Overview = imports.ui.overview;
-const SearchController = imports.ui.searchController;
-const Util = imports.misc.util;
-const WindowManager = imports.ui.windowManager;
-const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
-const WorkspacesView = imports.ui.workspacesView;
+
+import GLib from 'gi://GLib';
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as AppDisplay from './appDisplay.js';
+import * as Dash from './dash.js';
+import * as Layout from './layout.js';
+import * as Main from './main.js';
+import * as Overview from './overview.js';
+import * as SearchController from './searchController.js';
+import * as Util from '../misc/util.js';
+import * as WindowManager from './windowManager.js';
+import * as WorkspaceThumbnail from './workspaceThumbnail.js';
+import * as WorkspacesView from './workspacesView.js';
const SMALL_WORKSPACE_RATIO = 0.15;
const DASH_MAX_HEIGHT_RATIO = 0.15;
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
-var SIDE_CONTROLS_ANIMATION_TIME = Overview.ANIMATION_TIME;
+export const SIDE_CONTROLS_ANIMATION_TIME = 250;
/** @enum {number} */
-var ControlsState = {
+export const ControlsState = {
HIDDEN: 0,
WINDOW_PICKER: 1,
APP_GRID: 2,
};
-var ControlsManagerLayout = GObject.registerClass(
+const ControlsManagerLayout = GObject.registerClass(
class ControlsManagerLayout extends Clutter.BoxLayout {
_init(searchEntry, appDisplay, workspacesDisplay, workspacesThumbnails,
searchController, dash, stateAdjustment) {
}
});
-var OverviewAdjustment = GObject.registerClass({
+export const OverviewAdjustment = GObject.registerClass({
Properties: {
'gesture-in-progress': GObject.ParamSpec.boolean(
'gesture-in-progress', 'Gesture in progress', 'Gesture in progress',
}
});
-var ControlsManager = GObject.registerClass(
+export const ControlsManager = GObject.registerClass(
class ControlsManager extends St.Widget {
_init() {
super._init({
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported PadOsd, PadOsdService */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const GDesktopEnums = imports.gi.GDesktopEnums;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Pango = imports.gi.Pango;
-const Rsvg = imports.gi.Rsvg;
-const St = imports.gi.St;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import GDesktopEnums from 'gi://GDesktopEnums';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Pango from 'gi://Pango';
+import Rsvg from 'gi://Rsvg';
+import St from 'gi://St';
-const Signals = imports.misc.signals;
+import * as Signals from '../misc/signals.js';
-const Main = imports.ui.main;
-const PopupMenu = imports.ui.popupMenu;
-const Layout = imports.ui.layout;
+import * as Main from './main.js';
+import * as PopupMenu from './popupMenu.js';
+import * as Layout from './layout.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../misc/fileUtils.js';
const ACTIVE_COLOR = "#729fcf";
const UP = 0;
const DOWN = 1;
-var PadChooser = GObject.registerClass({
+const PadChooser = GObject.registerClass({
Signals: { 'pad-selected': { param_types: [Clutter.InputDevice.$gtype] } },
}, class PadChooser extends St.Button {
_init(device, groupDevices) {
}
});
-var KeybindingEntry = GObject.registerClass({
+const KeybindingEntry = GObject.registerClass({
Signals: { 'keybinding-edited': { param_types: [GObject.TYPE_STRING] } },
}, class KeybindingEntry extends St.Entry {
_init() {
}
});
-var ActionComboBox = GObject.registerClass({
+const ActionComboBox = GObject.registerClass({
Signals: { 'action-selected': { param_types: [GObject.TYPE_INT] } },
}, class ActionComboBox extends St.Button {
_init() {
}
});
-var ActionEditor = GObject.registerClass({
+const ActionEditor = GObject.registerClass({
Signals: { 'done': {} },
}, class ActionEditor extends St.Widget {
_init() {
}
});
-var PadDiagram = GObject.registerClass({
+const PadDiagram = GObject.registerClass({
Properties: {
'left-handed': GObject.ParamSpec.boolean('left-handed',
'left-handed', 'Left handed',
}
});
-var PadOsd = GObject.registerClass({
+export const PadOsd = GObject.registerClass({
Signals: {
'pad-selected': { param_types: [Clutter.InputDevice.$gtype] },
'closed': {},
const PadOsdIface = loadInterfaceXML('org.gnome.Shell.Wacom.PadOsd');
-var PadOsdService = class extends Signals.EventEmitter {
+export class PadOsdService extends Signals.EventEmitter {
constructor() {
super();
global.display.request_pad_osd(padDevice, editionMode);
invocation.return_value(null);
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported PageIndicators */
-const Clutter = imports.gi.Clutter;
-const Graphene = imports.gi.Graphene;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import Graphene from 'gi://Graphene';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
const INDICATOR_INACTIVE_OPACITY = 128;
const INDICATOR_INACTIVE_OPACITY_HOVER = 255;
const INDICATOR_INACTIVE_SCALE = 2 / 3;
const INDICATOR_INACTIVE_SCALE_PRESSED = 0.5;
-var PageIndicators = GObject.registerClass({
+export const PageIndicators = GObject.registerClass({
Signals: { 'page-activated': { param_types: [GObject.TYPE_INT] } },
}, class PageIndicators extends St.BoxLayout {
_init(orientation = Clutter.Orientation.VERTICAL) {
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Panel */
-
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Animation = imports.ui.animation;
-const { AppMenu } = imports.ui.appMenu;
+
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Animation from './animation.js';
+import {AppMenu} from './appMenu.js';
const Config = imports.misc.config;
-const CtrlAltTab = imports.ui.ctrlAltTab;
-const DND = imports.ui.dnd;
-const Overview = imports.ui.overview;
-const PopupMenu = imports.ui.popupMenu;
-const PanelMenu = imports.ui.panelMenu;
-const {QuickSettingsMenu, SystemIndicator} = imports.ui.quickSettings;
-const Main = imports.ui.main;
-
-const RemoteAccessStatus = imports.ui.status.remoteAccess;
-const PowerProfileStatus = imports.ui.status.powerProfiles;
-const RFKillStatus = imports.ui.status.rfkill;
-const CameraStatus = imports.ui.status.camera;
-const VolumeStatus = imports.ui.status.volume;
-const BrightnessStatus = imports.ui.status.brightness;
-const SystemStatus = imports.ui.status.system;
-const LocationStatus = imports.ui.status.location;
-const NightLightStatus = imports.ui.status.nightLight;
-const DarkModeStatus = imports.ui.status.darkMode;
-const BacklightStatus = imports.ui.status.backlight;
-const ThunderboltStatus = imports.ui.status.thunderbolt;
-const AutoRotateStatus = imports.ui.status.autoRotate;
-const BackgroundAppsStatus = imports.ui.status.backgroundApps;
-
-const {DateMenuButton} = imports.ui.dateMenu;
-const {ATIndicator} = imports.ui.status.accessibility;
-const {InputSourceIndicator} = imports.ui.status.keyboard;
-const {DwellClickIndicator} = imports.ui.status.dwellClick;
-const {ScreenRecordingIndicator, ScreenSharingIndicator} = imports.ui.status.remoteAccess;
-
-var PANEL_ICON_SIZE = 16;
-var APP_MENU_ICON_MARGIN = 0;
-
-var BUTTON_DND_ACTIVATION_TIMEOUT = 250;
+import * as CtrlAltTab from './ctrlAltTab.js';
+import * as DND from './dnd.js';
+import * as Overview from './overview.js';
+import * as PopupMenu from './popupMenu.js';
+import * as PanelMenu from './panelMenu.js';
+import {QuickSettingsMenu, SystemIndicator} from './quickSettings.js';
+import * as Main from './main.js';
+
+import * as RemoteAccessStatus from './status/remoteAccess.js';
+import * as PowerProfileStatus from './status/powerProfiles.js';
+import * as RFKillStatus from './status/rfkill.js';
+import * as CameraStatus from './status/camera.js';
+import * as VolumeStatus from './status/volume.js';
+import * as BrightnessStatus from './status/brightness.js';
+import * as SystemStatus from './status/system.js';
+import * as LocationStatus from './status/location.js';
+import * as NightLightStatus from './status/nightLight.js';
+import * as DarkModeStatus from './status/darkMode.js';
+import * as BacklightStatus from './status/backlight.js';
+import * as ThunderboltStatus from './status/thunderbolt.js';
+import * as AutoRotateStatus from './status/autoRotate.js';
+import * as BackgroundAppsStatus from './status/backgroundApps.js';
+
+import {DateMenuButton} from './dateMenu.js';
+import {ATIndicator} from './status/accessibility.js';
+import {InputSourceIndicator} from './status/keyboard.js';
+import {DwellClickIndicator} from './status/dwellClick.js';
+import {ScreenRecordingIndicator, ScreenSharingIndicator} from './status/remoteAccess.js';
+
+const PANEL_ICON_SIZE = 16;
+const APP_MENU_ICON_MARGIN = 0;
+
+const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
const N_QUICK_SETTINGS_COLUMNS = 2;
* this menu also handles startup notification for it. So when we
* have an active startup notification, we switch modes to display that.
*/
-var AppMenuButton = GObject.registerClass({
- Signals: { 'changed': {} },
+const AppMenuButton = GObject.registerClass({
+ Signals: {'changed': {}},
}, class AppMenuButton extends PanelMenu.Button {
_init(panel) {
super._init(0.0, null, true);
}
});
-var ActivitiesButton = GObject.registerClass(
+const ActivitiesButton = GObject.registerClass(
class ActivitiesButton extends PanelMenu.Button {
_init() {
super._init(0.0, null, true);
}
});
-var QuickSettings = GObject.registerClass(
+const QuickSettings = GObject.registerClass(
class QuickSettings extends PanelMenu.Button {
constructor() {
super(0.0, C_('System menu in the top bar', 'System'), true);
async _setupIndicators() {
if (Config.HAVE_NETWORKMANAGER) {
- // TODO: This will be an asynchronous import once this migrates
- // to modules. Add a no-op await now to enforce this being an async
- // function.
- const NetworkStatus = await imports.ui.status.network;
+ /** @type {import('./status/network.js')} */
+ const NetworkStatus = await import('./status/network.js');
this._network = new NetworkStatus.Indicator();
} else {
}
if (Config.HAVE_BLUETOOTH) {
- // TODO: This will be an asynchronous import once this migrates
- // to modules. Add a no-op await now to enforce this being an async
- // function.
- const BluetoothStatus = await imports.ui.status.bluetooth;
+ /** @type {import('./status/bluetooth.js')} */
+ const BluetoothStatus = await import('./status/bluetooth.js');
this._bluetooth = new BluetoothStatus.Indicator();
} else {
'screenSharing': ScreenSharingIndicator,
};
-var Panel = GObject.registerClass(
+export const Panel = GObject.registerClass(
class Panel extends St.Widget {
_init() {
super._init({
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Button, SystemIndicator */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
-const Main = imports.ui.main;
-const Params = imports.misc.params;
-const PopupMenu = imports.ui.popupMenu;
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
+import * as PopupMenu from './popupMenu.js';
-var ButtonBox = GObject.registerClass(
+export const ButtonBox = GObject.registerClass(
class ButtonBox extends St.Widget {
_init(params) {
params = Params.parse(params, {
}
});
-var Button = GObject.registerClass({
+export const Button = GObject.registerClass({
Signals: { 'menu-set': {} },
}, class PanelMenuButton extends ButtonBox {
_init(menuAlignment, nameText, dontCreateMenu) {
* of an icon and a menu section, which will be composed into the
* aggregate menu.
*/
-var SystemIndicator = GObject.registerClass(
+export const SystemIndicator = GObject.registerClass(
class SystemIndicator extends St.BoxLayout {
_init() {
super._init({
-/* exported PointerA11yTimeout */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const St = imports.gi.St;
-const Main = imports.ui.main;
-const Cairo = imports.cairo;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import St from 'gi://St';
+import * as Main from './main.js';
+import Cairo from 'gi://cairo';
const SUCCESS_ZOOM_OUT_DURATION = 150;
-var PieTimer = GObject.registerClass({
+const PieTimer = GObject.registerClass({
Properties: {
'angle': GObject.ParamSpec.double(
'angle', 'angle', 'angle',
}
});
-var PointerA11yTimeout = class PointerA11yTimeout {
+export class PointerA11yTimeout {
constructor() {
let seat = Clutter.get_default_backend().get_default_seat();
global.display.set_cursor(Meta.Cursor.DEFAULT);
});
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported getPointerWatcher */
-const GLib = imports.gi.GLib;
+import GLib from 'gi://GLib';
// We stop polling if the user is idle for more than this amount of time
-var IDLE_TIME = 1000;
+const IDLE_TIME = 1000;
// This file implements a reasonably efficient system for tracking the position
// of the mouse pointer. We simply query the pointer from the X server in a loop,
/**
* @returns {PointerWatcher}
*/
-function getPointerWatcher() {
+export function getPointerWatcher() {
if (_pointerWatcher == null)
_pointerWatcher = new PointerWatcher();
return _pointerWatcher;
}
-var PointerWatch = class {
+class PointerWatch {
constructor(watcher, interval, callback) {
this.watcher = watcher;
this.interval = interval;
remove() {
this.watcher._removeWatch(this);
}
-};
+}
-var PointerWatcher = class {
+class PointerWatcher {
constructor() {
this._idleMonitor = global.backend.get_core_idle_monitor();
this._idleMonitor.add_idle_watch(IDLE_TIME, this._onIdleMonitorBecameIdle.bind(this));
i++;
}
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported PopupMenuItem, PopupSeparatorMenuItem, Switch, PopupSwitchMenuItem,
- PopupImageMenuItem, PopupMenu, PopupDummyMenu, PopupSubMenu,
- PopupMenuSection, PopupSubMenuMenuItem, PopupMenuManager */
-
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Graphene = imports.gi.Graphene;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Signals = imports.misc.signals;
-
-const BoxPointer = imports.ui.boxpointer;
-const Main = imports.ui.main;
-const Params = imports.misc.params;
+
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Graphene from 'gi://Graphene';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import * as Signals from '../misc/signals.js';
+
+import * as BoxPointer from './boxpointer.js';
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
/** @enum {number} */
-var Ornament = {
+export const Ornament = {
NONE: 0,
DOT: 1,
CHECK: 2,
/**
* arrowIcon
+ *
* @param {St.Side} side - Side to which the arrow points.
* @returns {St.Icon} a new arrow icon
*/
-function arrowIcon(side) {
+export function arrowIcon(side) {
let iconName;
switch (side) {
case St.Side.TOP:
return arrow;
}
-var PopupBaseMenuItem = GObject.registerClass({
+export const PopupBaseMenuItem = GObject.registerClass({
Properties: {
'active': GObject.ParamSpec.boolean('active', 'active', 'active',
GObject.ParamFlags.READWRITE,
}
});
-var PopupMenuItem = GObject.registerClass(
+export const PopupMenuItem = GObject.registerClass(
class PopupMenuItem extends PopupBaseMenuItem {
_init(text, params) {
super._init(params);
});
-var PopupSeparatorMenuItem = GObject.registerClass(
+export const PopupSeparatorMenuItem = GObject.registerClass(
class PopupSeparatorMenuItem extends PopupBaseMenuItem {
_init(text) {
super._init({
}
});
-var Switch = GObject.registerClass({
+export const Switch = GObject.registerClass({
Properties: {
'state': GObject.ParamSpec.boolean(
'state', 'state', 'state',
}
});
-var PopupSwitchMenuItem = GObject.registerClass({
+export const PopupSwitchMenuItem = GObject.registerClass({
Signals: { 'toggled': { param_types: [GObject.TYPE_BOOLEAN] } },
}, class PopupSwitchMenuItem extends PopupBaseMenuItem {
_init(text, active, params) {
}
});
-var PopupImageMenuItem = GObject.registerClass(
+export const PopupImageMenuItem = GObject.registerClass(
class PopupImageMenuItem extends PopupBaseMenuItem {
_init(text, icon, params) {
super._init(params);
}
});
-var PopupMenuBase = class extends Signals.EventEmitter {
+export class PopupMenuBase extends Signals.EventEmitter {
constructor(sourceActor, styleClass) {
super();
Main.sessionMode.disconnectObject(this);
}
-};
+}
-var PopupMenu = class extends PopupMenuBase {
+export class PopupMenu extends PopupMenuBase {
constructor(sourceActor, arrowAlignment, arrowSide) {
super(sourceActor, 'popup-menu-content');
super.destroy();
}
-};
+}
-var PopupDummyMenu = class extends Signals.EventEmitter {
+export class PopupDummyMenu extends Signals.EventEmitter {
constructor(sourceActor) {
super();
destroy() {
this.emit('destroy');
}
-};
+}
-var PopupSubMenu = class extends PopupMenuBase {
+export class PopupSubMenu extends PopupMenuBase {
constructor(sourceActor, sourceArrow) {
super(sourceActor);
return Clutter.EVENT_PROPAGATE;
}
-};
+}
/**
* PopupMenuSection:
* can add it to another menu), but is completely transparent
* to the user
*/
-var PopupMenuSection = class extends PopupMenuBase {
+export class PopupMenuSection extends PopupMenuBase {
constructor() {
super();
close() {
this.emit('open-state-changed', false);
}
-};
+}
-var PopupSubMenuMenuItem = GObject.registerClass(
+export const PopupSubMenuMenuItem = GObject.registerClass(
class PopupSubMenuMenuItem extends PopupBaseMenuItem {
_init(text, wantIcon) {
super._init();
/* Basic implementation of a menu manager.
* Call addMenu to add menus
*/
-var PopupMenuManager = class {
+export class PopupMenuManager {
constructor(owner, grabParams) {
this._grabParams = Params.parse(grabParams,
{ actionMode: Shell.ActionMode.POPUP });
if (isUser)
menu.close(BoxPointer.PopupAnimation.FULL);
}
-};
+}
-/* exported QuickToggle, QuickMenuToggle, QuickSlider, QuickSettingsMenu, SystemIndicator */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Graphene = imports.gi.Graphene;
-const Meta = imports.gi.Meta;
-const Pango = imports.gi.Pango;
-const St = imports.gi.St;
-
-const Main = imports.ui.main;
-const PopupMenu = imports.ui.popupMenu;
-const {Slider} = imports.ui.slider;
-
-const {PopupAnimation} = imports.ui.boxpointer;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Graphene from 'gi://Graphene';
+import Meta from 'gi://Meta';
+import Pango from 'gi://Pango';
+import St from 'gi://St';
+
+import * as Main from './main.js';
+import * as PopupMenu from './popupMenu.js';
+import {Slider} from './slider.js';
+
+import {PopupAnimation} from './boxpointer.js';
const DIM_BRIGHTNESS = -0.4;
const POPUP_ANIMATION_TIME = 400;
-
const MENU_BUTTON_BRIGHTNESS = 0.1;
-var QuickSettingsItem = GObject.registerClass({
+export const QuickSettingsItem = GObject.registerClass({
Properties: {
'has-menu': GObject.ParamSpec.boolean(
'has-menu', 'has-menu', 'has-menu',
}
});
-var QuickToggle = GObject.registerClass({
+export const QuickToggle = GObject.registerClass({
Properties: {
'title': GObject.ParamSpec.string('title', '', '',
GObject.ParamFlags.READWRITE,
}
});
-var QuickMenuToggle = GObject.registerClass({
+export const QuickMenuToggle = GObject.registerClass({
Properties: {
'title': GObject.ParamSpec.string('title', '', '',
GObject.ParamFlags.READWRITE,
}
});
-var QuickSlider = GObject.registerClass({
+export const QuickSlider = GObject.registerClass({
Properties: {
'icon-name': GObject.ParamSpec.override('icon-name', St.Button),
'gicon': GObject.ParamSpec.object('gicon', '', '',
}
});
-var QuickSettingsMenu = class extends PopupMenu.PopupMenu {
+export const QuickSettingsMenu = class extends PopupMenu.PopupMenu {
constructor(sourceActor, nColumns = 1) {
super(sourceActor, 0, St.Side.TOP);
}
};
-var SystemIndicator = GObject.registerClass(
+export const SystemIndicator = GObject.registerClass(
class SystemIndicator extends St.BoxLayout {
_init() {
super._init({
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported loadRemoteSearchProviders */
-const GdkPixbuf = imports.gi.GdkPixbuf;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import GdkPixbuf from 'gi://GdkPixbuf';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const FileUtils = imports.misc.fileUtils;
+import * as FileUtils from '../misc/fileUtils.js';
const KEY_FILE_GROUP = 'Shell Search Provider';
</interface>
</node>`;
-var SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface);
-var SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface);
+const SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface);
+const SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface);
/**
* loadRemoteSearchProviders:
* @param {Gio.Settings} searchSettings - search settings
* @returns {RemoteSearchProvider[]} - the list of remote providers
*/
-function loadRemoteSearchProviders(searchSettings) {
+export function loadRemoteSearchProviders(searchSettings) {
let objectPaths = {};
let loadedProviders = [];
return loadedProviders;
}
-var RemoteSearchProvider = class {
+class RemoteSearchProvider {
constructor(appInfo, dbusName, dbusPath, autoStart, proxyInfo) {
if (!proxyInfo)
proxyInfo = SearchProviderProxyInfo;
log(`Search provider ${this.appInfo.get_id()} does not implement LaunchSearch`);
this.appInfo.launch([], global.create_app_launch_context(0, -1));
}
-};
+}
-var RemoteSearchProvider2 = class extends RemoteSearchProvider {
+class RemoteSearchProvider2 extends RemoteSearchProvider {
constructor(appInfo, dbusName, dbusPath, autoStart) {
super(appInfo, dbusName, dbusPath, autoStart, SearchProvider2ProxyInfo);
this.proxy.LaunchSearchAsync(
terms, global.get_current_time()).catch(logError);
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Ripples */
-const Clutter = imports.gi.Clutter;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import St from 'gi://St';
// Shamelessly copied from the layout "hotcorner" ripples implementation
-var Ripples = class Ripples {
+export class Ripples {
constructor(px, py, styleClass) {
this._x = 0;
this._y = 0;
this._animRipple(this._ripple2, 50, 1000, 0.0, 0.7, 1.25);
this._animRipple(this._ripple3, 350, 1000, 0.0, 0.3, 1);
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported RunDialog */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Dialog = imports.ui.dialog;
-const Main = imports.ui.main;
-const ModalDialog = imports.ui.modalDialog;
-const ShellEntry = imports.ui.shellEntry;
-const Util = imports.misc.util;
-const History = imports.misc.history;
+
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Dialog from './dialog.js';
+import * as Main from './main.js';
+import * as ModalDialog from './modalDialog.js';
+import * as ShellEntry from './shellEntry.js';
+import * as Util from '../misc/util.js';
+import * as History from '../misc/history.js';
const HISTORY_KEY = 'command-history';
const EXEC_KEY = 'exec';
const EXEC_ARG_KEY = 'exec-arg';
-var RunDialog = GObject.registerClass(
+export const RunDialog = GObject.registerClass(
class RunDialog extends ModalDialog.ModalDialog {
_init() {
super._init({
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ScreenShield */
-
-const AccountsService = imports.gi.AccountsService;
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const Graphene = imports.gi.Graphene;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Signals = imports.misc.signals;
-
-const GnomeSession = imports.misc.gnomeSession;
-const OVirt = imports.gdm.oVirt;
-const LoginManager = imports.misc.loginManager;
-const Lightbox = imports.ui.lightbox;
-const Main = imports.ui.main;
-const Overview = imports.ui.overview;
-const MessageTray = imports.ui.messageTray;
-const ShellDBus = imports.ui.shellDBus;
-const SmartcardManager = imports.misc.smartcardManager;
-
-const {adjustAnimationTime} = imports.misc.animationUtils;
+
+import AccountsService from 'gi://AccountsService';
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import Graphene from 'gi://Graphene';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Signals from '../misc/signals.js';
+
+import * as GnomeSession from '../misc/gnomeSession.js';
+import * as OVirt from '../gdm/oVirt.js';
+import * as LoginManager from '../misc/loginManager.js';
+import * as Lightbox from './lightbox.js';
+import * as Main from './main.js';
+import * as Overview from './overview.js';
+import * as MessageTray from './messageTray.js';
+import * as ShellDBus from './shellDBus.js';
+import * as SmartcardManager from '../misc/smartcardManager.js';
+
+import {adjustAnimationTime} from '../misc/animationUtils.js';
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
const LOCK_ENABLED_KEY = 'lock-enabled';
// - MANUAL_FADE_TIME is used for lowering the shield when asked by the user,
// or when cancelling the dialog
// - CURTAIN_SLIDE_TIME is used when raising the shield before unlocking
-var STANDARD_FADE_TIME = 10000;
-var MANUAL_FADE_TIME = 300;
-var CURTAIN_SLIDE_TIME = 300;
+const STANDARD_FADE_TIME = 10000;
+const MANUAL_FADE_TIME = 300;
+const CURTAIN_SLIDE_TIME = 300;
/**
* If you are setting org.gnome.desktop.session.idle-delay directly in dconf,
* This will ensure that the screen blanks at the right time when it fades out.
* https://bugzilla.gnome.org/show_bug.cgi?id=668703 explains the dependency.
*/
-var ScreenShield = class extends Signals.EventEmitter {
+export class ScreenShield extends Signals.EventEmitter {
constructor() {
super();
return GLib.SOURCE_REMOVE;
});
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ScreenshotService, ScreenshotUI, showScreenshotUI, captureScreenshot */
-
-const Clutter = imports.gi.Clutter;
-const Cogl = imports.gi.Cogl;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const GLib = imports.gi.GLib;
-const Graphene = imports.gi.Graphene;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const GrabHelper = imports.ui.grabHelper;
-const Layout = imports.ui.layout;
-const Lightbox = imports.ui.lightbox;
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
-const Workspace = imports.ui.workspace;
+
+import Clutter from 'gi://Clutter';
+import Cogl from 'gi://Cogl';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import GLib from 'gi://GLib';
+import Graphene from 'gi://Graphene';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as GrabHelper from './grabHelper.js';
+import * as Layout from './layout.js';
+import * as Lightbox from './lightbox.js';
+import * as Main from './main.js';
+import * as MessageTray from './messageTray.js';
+import * as Workspace from './workspace.js';
Gio._promisify(Shell.Screenshot.prototype, 'pick_color');
Gio._promisify(Shell.Screenshot.prototype, 'screenshot');
Gio._promisify(Shell.Screenshot.prototype, 'screenshot_stage_to_content');
Gio._promisify(Shell.Screenshot, 'composite_to_stream');
-const { loadInterfaceXML } = imports.misc.fileUtils;
-const { DBusSenderChecker } = imports.misc.util;
+import {loadInterfaceXML} from '../misc/fileUtils.js';
+import {DBusSenderChecker} from '../misc/util.js';
const ScreenshotIface = loadInterfaceXML('org.gnome.Shell.Screenshot');
const ScreencastIface = loadInterfaceXML('org.gnome.Shell.Screencast');
const ScreencastProxy = Gio.DBusProxy.makeProxyWrapper(ScreencastIface);
-var IconLabelButton = GObject.registerClass(
+const IconLabelButton = GObject.registerClass(
class IconLabelButton extends St.Button {
_init(iconName, label, params) {
super._init(params);
});
this.set_child(this._container);
- this._container.add_child(new St.Icon({ icon_name: iconName }));
+ this._container.add_child(new St.Icon({icon_name: iconName}));
this._container.add_child(new St.Label({
text: label,
x_align: Clutter.ActorAlign.CENTER,
}
});
-var Tooltip = GObject.registerClass(
+export const Tooltip = GObject.registerClass(
class Tooltip extends St.Label {
_init(widget, params) {
super._init(params);
}
});
-var UIAreaIndicator = GObject.registerClass(
+const UIAreaIndicator = GObject.registerClass(
class UIAreaIndicator extends St.Widget {
_init(params) {
super._init(params);
}
});
-var UIAreaSelector = GObject.registerClass({
+const UIAreaSelector = GObject.registerClass({
Signals: { 'drag-started': {}, 'drag-ended': {} },
}, class UIAreaSelector extends St.Widget {
_init(params) {
}
});
-var UIWindowSelectorLayout = GObject.registerClass(
+const UIWindowSelectorLayout = GObject.registerClass(
class UIWindowSelectorLayout extends Workspace.WorkspaceLayout {
_init(monitorIndex) {
super._init(null, monitorIndex, null);
}
});
-var UIWindowSelectorWindow = GObject.registerClass(
+const UIWindowSelectorWindow = GObject.registerClass(
class UIWindowSelectorWindow extends St.Button {
_init(actor, params) {
super._init(params);
}
});
-var UIWindowSelector = GObject.registerClass(
+const UIWindowSelector = GObject.registerClass(
class UIWindowSelector extends St.Widget {
_init(monitorIndex, params) {
super._init(params);
SCREENCAST: 1,
};
-var ScreenshotUI = GObject.registerClass({
+export const ScreenshotUI = GObject.registerClass({
Properties: {
'screencast-in-progress': GObject.ParamSpec.boolean(
'screencast-in-progress',
});
}
-var ScreenshotService = class {
+export class ScreenshotService {
constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreenshotIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Screenshot');
this._removeShooterForSender(invocation.get_sender());
}
}
-};
+}
-var SelectArea = GObject.registerClass(
+export const SelectArea = GObject.registerClass(
class SelectArea extends St.Widget {
_init() {
this._startX = -1;
}
});
-var RecolorEffect = GObject.registerClass({
+const RecolorEffect = GObject.registerClass({
Properties: {
color: GObject.ParamSpec.boxed(
'color', 'color', 'replacement color',
}
});
-var PickPixel = GObject.registerClass(
+export const PickPixel = GObject.registerClass(
class PickPixel extends St.Widget {
_init(screenshot) {
super._init({ visible: false, reactive: true });
}
});
-var FLASHSPOT_ANIMATION_OUT_TIME = 500; // milliseconds
+const FLASHSPOT_ANIMATION_OUT_TIME = 500; // milliseconds
-var Flashspot = GObject.registerClass(
+export const Flashspot = GObject.registerClass(
class Flashspot extends Lightbox.Lightbox {
_init(area) {
super._init(Main.uiGroup, {
import Shell from 'gi://Shell';
const Config = imports.misc.config;
-const Main = imports.ui.main;
-const Params = imports.misc.params;
-const Util = imports.misc.util;
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
+import * as Util from '../misc/util.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../misc/fileUtils.js';
// This module provides functionality for driving the shell user interface
// in an automated fashion. The primary current use case for this is
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported SearchResultsView */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const AppDisplay = imports.ui.appDisplay;
-const IconGrid = imports.ui.iconGrid;
-const Main = imports.ui.main;
-const ParentalControlsManager = imports.misc.parentalControlsManager;
-const RemoteSearch = imports.ui.remoteSearch;
-const {ensureActorVisibleInScrollView} = imports.misc.animationUtils;
+import * as AppDisplay from './appDisplay.js';
+import * as IconGrid from './iconGrid.js';
+import * as Main from './main.js';
+import * as ParentalControlsManager from '../misc/parentalControlsManager.js';
+import * as RemoteSearch from './remoteSearch.js';
+import {ensureActorVisibleInScrollView} from '../misc/animationUtils.js';
-const { Highlighter } = imports.misc.util;
+import {Highlighter} from '../misc/util.js';
const SEARCH_PROVIDERS_SCHEMA = 'org.gnome.desktop.search-providers';
-var MAX_LIST_SEARCH_RESULTS_ROWS = 5;
+const MAX_LIST_SEARCH_RESULTS_ROWS = 5;
-var MaxWidthBox = GObject.registerClass(
+const MaxWidthBox = GObject.registerClass(
class MaxWidthBox extends St.BoxLayout {
vfunc_allocate(box) {
let themeNode = this.get_theme_node();
}
});
-var SearchResult = GObject.registerClass(
+export const SearchResult = GObject.registerClass(
class SearchResult extends St.Button {
_init(provider, metaInfo, resultsView) {
this.provider = provider;
}
});
-var ListSearchResult = GObject.registerClass(
+export const ListSearchResult = GObject.registerClass(
class ListSearchResult extends SearchResult {
_init(provider, metaInfo, resultsView) {
super._init(provider, metaInfo, resultsView);
}
});
-var GridSearchResult = GObject.registerClass(
+export const GridSearchResult = GObject.registerClass(
class GridSearchResult extends SearchResult {
_init(provider, metaInfo, resultsView) {
super._init(provider, metaInfo, resultsView);
}
});
-var SearchResultsBase = GObject.registerClass({
+const SearchResultsBase = GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
Properties: {
'focus-child': GObject.ParamSpec.object(
}
});
-var ListSearchResults = GObject.registerClass(
+export const ListSearchResults = GObject.registerClass(
class ListSearchResults extends SearchResultsBase {
_init(provider, resultsView) {
super._init(provider, resultsView);
}
});
-var GridSearchResultsLayout = GObject.registerClass({
+const GridSearchResultsLayout = GObject.registerClass({
Properties: {
'spacing': GObject.ParamSpec.int('spacing', 'Spacing', 'Spacing',
GObject.ParamFlags.READWRITE, 0, GLib.MAXINT32, 0),
}
});
-var GridSearchResults = GObject.registerClass(
+export const GridSearchResults = GObject.registerClass(
class GridSearchResults extends SearchResultsBase {
_init(provider, resultsView) {
super._init(provider, resultsView);
}
});
-var SearchResultsView = GObject.registerClass({
+export const SearchResultsView = GObject.registerClass({
Signals: {'terms-changed': {}},
}, class SearchResultsView extends St.BoxLayout {
_init() {
}
});
-var ProviderInfo = GObject.registerClass(
+const ProviderInfo = GObject.registerClass(
class ProviderInfo extends St.Button {
_init(provider) {
this.provider = provider;
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported SearchController */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
-const Main = imports.ui.main;
-const Search = imports.ui.search;
-const ShellEntry = imports.ui.shellEntry;
+import * as Main from './main.js';
+import * as Search from './search.js';
+import * as ShellEntry from './shellEntry.js';
-var FocusTrap = GObject.registerClass(
+const FocusTrap = GObject.registerClass(
class FocusTrap extends St.Widget {
vfunc_navigate_focus(from, direction) {
if (direction === St.DirectionType.TAB_FORWARD ||
return searchString.split(/\s+/);
}
-var SearchController = GObject.registerClass({
+export const SearchController = GObject.registerClass({
Properties: {
'search-active': GObject.ParamSpec.boolean(
'search-active', 'search-active', 'search-active',
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported SessionMode, listModes */
-const GLib = imports.gi.GLib;
-const Signals = imports.misc.signals;
+import GLib from 'gi://GLib';
+import * as Signals from '../misc/signals.js';
-const FileUtils = imports.misc.fileUtils;
-const Params = imports.misc.params;
+import * as FileUtils from '../misc/fileUtils.js';
+import * as Params from '../misc/params.js';
+
+import {LoginDialog} from '../gdm/loginDialog.js';
+import {UnlockDialog} from '../ui/unlockDialog.js';
const Config = imports.misc.config;
hasNotifications: true,
isGreeter: true,
isPrimary: true,
- unlockDialog: imports.gdm.loginDialog.LoginDialog,
+ unlockDialog: LoginDialog,
components: Config.HAVE_NETWORKMANAGER
? ['networkAgent', 'polkitAgent']
: ['polkitAgent'],
hasNotifications: true,
isLocked: false,
isPrimary: true,
- unlockDialog: imports.ui.unlockDialog.UnlockDialog,
+ unlockDialog: UnlockDialog,
components: USER_SESSION_COMPONENTS,
panel: {
left: ['activities'],
_loadMode(dir, info);
}
-function listModes() {
+export function listModes() {
_loadModes();
let loop = new GLib.MainLoop(null, false);
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
loop.run();
}
-var SessionMode = class extends Signals.EventEmitter {
+export class SessionMode extends Signals.EventEmitter {
constructor() {
super();
this.emit('updated');
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported GnomeShell, ScreenSaverDBus */
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
const Config = imports.misc.config;
-const ExtensionDownloader = imports.ui.extensionDownloader;
-const ExtensionUtils = imports.misc.extensionUtils;
-const Main = imports.ui.main;
-const Screenshot = imports.ui.screenshot;
+import * as ExtensionDownloader from './extensionDownloader.js';
+import * as ExtensionUtils from '../misc/extensionUtils.js';
+import * as Main from './main.js';
+import * as Screenshot from './screenshot.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
-const { DBusSenderChecker } = imports.misc.util;
-const { ControlsState } = imports.ui.overviewControls;
+import {loadInterfaceXML} from '../misc/fileUtils.js';
+import {DBusSenderChecker} from '../misc/util.js';
+import {ControlsState} from './overviewControls.js';
const GnomeShellIface = loadInterfaceXML('org.gnome.Shell');
const ScreenSaverIface = loadInterfaceXML('org.gnome.ScreenSaver');
-var GnomeShell = class {
+export class GnomeShell {
constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell');
get ShellVersion() {
return Config.PACKAGE_VERSION;
}
-};
+}
const GnomeShellExtensionsIface = loadInterfaceXML('org.gnome.Shell.Extensions');
-var GnomeShellExtensions = class {
+class GnomeShellExtensions {
constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellExtensionsIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell');
this._dbusImpl.emit_signal('ExtensionStatusChanged',
GLib.Variant.new('(sis)', [newState.uuid, newState.state, newState.error]));
}
-};
+}
-var ScreenSaverDBus = class {
+export class ScreenSaverDBus {
constructor(screenShield) {
this._screenShield = screenShield;
screenShield.connect('active-changed', shield => {
else
return 0;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported addContextMenu CapsLockWarning */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const BoxPointer = imports.ui.boxpointer;
-const Main = imports.ui.main;
-const Params = imports.misc.params;
-const PopupMenu = imports.ui.popupMenu;
+import * as BoxPointer from './boxpointer.js';
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
+import * as PopupMenu from './popupMenu.js';
-var EntryMenu = class extends PopupMenu.PopupMenu {
+export class EntryMenu extends PopupMenu.PopupMenu {
constructor(entry) {
super(entry, 0, St.Side.TOP);
_onPasswordActivated() {
this._entry.password_visible = !this._entry.password_visible;
}
-};
+}
function _setMenuAlignment(entry, stageX) {
let [success, entryX] = entry.transform_stage_point(stageX, 0);
* @param {St.Entry} entry
* @param {*} params
*/
-function addContextMenu(entry, params) {
+export function addContextMenu(entry, params) {
if (entry.menu)
return;
});
}
-var CapsLockWarning = GObject.registerClass(
+export const CapsLockWarning = GObject.registerClass(
class CapsLockWarning extends St.Label {
_init(params) {
let defaultParams = { style_class: 'caps-lock-warning-label' };
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ShellMountOperation, GnomeShellMountOpHandler */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Animation = imports.ui.animation;
-const CheckBox = imports.ui.checkBox;
-const Dialog = imports.ui.dialog;
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
-const ModalDialog = imports.ui.modalDialog;
-const Params = imports.misc.params;
-const ShellEntry = imports.ui.shellEntry;
-
-const { loadInterfaceXML } = imports.misc.fileUtils;
-const {wiggle} = imports.misc.animationUtils;
-
-var LIST_ITEM_ICON_SIZE = 48;
-var WORK_SPINNER_ICON_SIZE = 16;
+
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Animation from './animation.js';
+import * as CheckBox from './checkBox.js';
+import * as Dialog from './dialog.js';
+import * as Main from './main.js';
+import * as MessageTray from './messageTray.js';
+import * as ModalDialog from './modalDialog.js';
+import * as Params from '../misc/params.js';
+import * as ShellEntry from './shellEntry.js';
+
+import {loadInterfaceXML} from '../misc/fileUtils.js';
+import {wiggle} from '../misc/animationUtils.js';
+
+const LIST_ITEM_ICON_SIZE = 48;
+const WORK_SPINNER_ICON_SIZE = 16;
const REMEMBER_MOUNT_PASSWORD_KEY = 'remember-mount-password';
/* -------------------------------------------------------- */
-var ShellMountOperation = class {
+export class ShellMountOperation {
constructor(source, params) {
params = Params.parse(params, { existingDialog: null });
this._dialog?.disconnectObject(this);
return this._dialog;
}
-};
+}
-var ShellUnmountNotifier = GObject.registerClass(
+const ShellUnmountNotifier = GObject.registerClass(
class ShellUnmountNotifier extends MessageTray.Source {
_init() {
super._init('', 'media-removable');
}
});
-var ShellMountQuestionDialog = GObject.registerClass({
+const ShellMountQuestionDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_INT] } },
}, class ShellMountQuestionDialog extends ModalDialog.ModalDialog {
_init() {
}
});
-var ShellMountPasswordDialog = GObject.registerClass({
+const ShellMountPasswordDialog = GObject.registerClass({
Signals: {
'response': {
param_types: [
}
});
-var ShellProcessesDialog = GObject.registerClass({
+const ShellProcessesDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_INT] } },
}, class ShellProcessesDialog extends ModalDialog.ModalDialog {
_init() {
const GnomeShellMountOpIface = loadInterfaceXML('org.Gtk.MountOperationHandler');
/** @enum {number} */
-var ShellMountOperationType = {
+const ShellMountOperationType = {
NONE: 0,
ASK_PASSWORD: 1,
ASK_QUESTION: 2,
SHOW_PROCESSES: 3,
};
-var GnomeShellMountOpHandler = class {
+export class GnomeShellMountOpHandler {
constructor() {
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(GnomeShellMountOpIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gtk/MountOperationHandler');
this._clearCurrentRequest(Gio.MountOperationResult.UNHANDLED, {});
this._closeDialog();
}
-};
+}
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
-/* exported Slider */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
-const BarLevel = imports.ui.barLevel;
+import * as BarLevel from './barLevel.js';
-var SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */
+const SLIDER_SCROLL_STEP = 0.02; /* Slider scrolling step in % */
-var Slider = GObject.registerClass({
+export const Slider = GObject.registerClass({
Signals: {
'drag-begin': {},
'drag-end': {},
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ATIndicator */
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
-const PanelMenu = imports.ui.panelMenu;
-const PopupMenu = imports.ui.popupMenu;
+import * as PanelMenu from '../panelMenu.js';
+import * as PopupMenu from '../popupMenu.js';
const A11Y_SCHEMA = 'org.gnome.desktop.a11y';
const KEY_ALWAYS_SHOW = 'always-show-universal-access-status';
const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
-var DPI_FACTOR_LARGE = 1.25;
+const DPI_FACTOR_LARGE = 1.25;
const WM_SCHEMA = 'org.gnome.desktop.wm.preferences';
const KEY_VISUAL_BELL = 'visual-bell';
const A11Y_INTERFACE_SCHEMA = 'org.gnome.desktop.a11y.interface';
const KEY_HIGH_CONTRAST = 'high-contrast';
-var ATIndicator = GObject.registerClass(
+export const ATIndicator = GObject.registerClass(
class ATIndicator extends PanelMenu.Button {
_init() {
super._init(0.5, _("Accessibility"));
-/* exported Indicator */
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import * as SystemActions from '../../misc/systemActions.js';
-const SystemActions = imports.misc.systemActions;
-
-const {QuickToggle, SystemIndicator} = imports.ui.quickSettings;
+import {QuickToggle, SystemIndicator} from '../quickSettings.js';
const RotationToggle = GObject.registerClass(
class RotationToggle extends QuickToggle {
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
-/* exported Indicator */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Main = imports.ui.main;
-const PopupMenu = imports.ui.popupMenu;
-const Util = imports.misc.util;
-
-const {Spinner} = imports.ui.animation;
-const {QuickToggle, SystemIndicator} = imports.ui.quickSettings;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Main from '../main.js';
+import * as PopupMenu from '../popupMenu.js';
+import * as Util from '../../misc/util.js';
+
+import {Spinner} from '../animation.js';
+import {QuickToggle, SystemIndicator} from '../quickSettings.js';
const {loadInterfaceXML} = imports.misc.dbusUtils;
const DBUS_NAME = 'org.freedesktop.background.Monitor';
Gio._promisify(Gio.DBusConnection.prototype, 'call');
-var BackgroundAppMenuItem = GObject.registerClass({
+const BackgroundAppMenuItem = GObject.registerClass({
Properties: {
'app': GObject.ParamSpec.object('app', '', '',
GObject.ParamFlags.READWRITE,
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported Indicator */
-const {Clutter, Gio, GObject, St} = imports.gi;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
-const {QuickMenuToggle, SystemIndicator} = imports.ui.quickSettings;
+import {QuickMenuToggle, SystemIndicator} from '../quickSettings.js';
-const PopupMenu = imports.ui.popupMenu;
-const {Slider} = imports.ui.slider;
+import * as PopupMenu from '../popupMenu.js';
+import {Slider} from '../slider.js';
-const {loadInterfaceXML} = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
const BUS_NAME = 'org.gnome.SettingsDaemon.Power';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power';
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Indicator */
+import 'gi://GnomeBluetooth?version=3.0';
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GnomeBluetooth = imports.gi.GnomeBluetooth;
-const GObject = imports.gi.GObject;
-const Pango = imports.gi.Pango;
-const St = imports.gi.St;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GnomeBluetooth from 'gi://GnomeBluetooth';
+import GObject from 'gi://GObject';
+import Pango from 'gi://Pango';
+import St from 'gi://St';
-const {Spinner} = imports.ui.animation;
-const PopupMenu = imports.ui.popupMenu;
-const {QuickMenuToggle, SystemIndicator} = imports.ui.quickSettings;
+import {Spinner} from '../animation.js';
+import * as PopupMenu from '../popupMenu.js';
+import {QuickMenuToggle, SystemIndicator} from '../quickSettings.js';
-const {loadInterfaceXML} = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
const {AdapterState} = GnomeBluetooth;
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Indicator */
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import {QuickSlider, SystemIndicator} from '../quickSettings.js';
-const {QuickSlider, SystemIndicator} = imports.ui.quickSettings;
-
-const {loadInterfaceXML} = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
const BUS_NAME = 'org.gnome.SettingsDaemon.Power';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Power';
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
-// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Indicator */
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
+import {SystemIndicator} from '../quickSettings.js';
-const {SystemIndicator} = imports.ui.quickSettings;
-
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
constructor() {
super();
-/* exported Indicator */
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import * as Main from '../main.js';
-const Main = imports.ui.main;
-const {QuickToggle, SystemIndicator} = imports.ui.quickSettings;
+import {QuickToggle, SystemIndicator} from '../quickSettings.js';
const DarkModeToggle = GObject.registerClass(
class DarkModeToggle extends QuickToggle {
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
-/* exported DwellClickIndicator */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
-const PanelMenu = imports.ui.panelMenu;
+import * as PanelMenu from '../panelMenu.js';
const MOUSE_A11Y_SCHEMA = 'org.gnome.desktop.a11y.mouse';
const KEY_DWELL_CLICK_ENABLED = 'dwell-click-enabled';
},
};
-var DwellClickIndicator = GObject.registerClass(
+export const DwellClickIndicator = GObject.registerClass(
class DwellClickIndicator extends PanelMenu.Button {
_init() {
super._init(0.5, _("Dwell Click"));
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported InputSourceIndicator */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const IBus = imports.gi.IBus;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const Gettext = imports.gettext;
-const Signals = imports.misc.signals;
-
-const IBusManager = imports.misc.ibusManager;
-const KeyboardManager = imports.misc.keyboardManager;
-const Main = imports.ui.main;
-const PopupMenu = imports.ui.popupMenu;
-const PanelMenu = imports.ui.panelMenu;
-const SwitcherPopup = imports.ui.switcherPopup;
-const Util = imports.misc.util;
-
-var INPUT_SOURCE_TYPE_XKB = 'xkb';
-var INPUT_SOURCE_TYPE_IBUS = 'ibus';
-
-var LayoutMenuItem = GObject.registerClass(
+
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import IBus from 'gi://IBus';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import * as Gettext from 'gettext';
+import * as Signals from '../../misc/signals.js';
+
+import * as IBusManager from '../../misc/ibusManager.js';
+import * as KeyboardManager from '../../misc/keyboardManager.js';
+import * as Main from '../main.js';
+import * as PopupMenu from '../popupMenu.js';
+import * as PanelMenu from '../panelMenu.js';
+import * as SwitcherPopup from '../switcherPopup.js';
+import * as Util from '../../misc/util.js';
+
+export const INPUT_SOURCE_TYPE_XKB = 'xkb';
+export const INPUT_SOURCE_TYPE_IBUS = 'ibus';
+
+export const LayoutMenuItem = GObject.registerClass(
class LayoutMenuItem extends PopupMenu.PopupBaseMenuItem {
_init(displayName, shortName) {
super._init();
}
});
-var InputSource = class extends Signals.EventEmitter {
+export class InputSource extends Signals.EventEmitter {
constructor(type, id, displayName, shortName, index) {
super();
else
return engineDesc.layout;
}
-};
+}
-var InputSourcePopup = GObject.registerClass(
+export const InputSourcePopup = GObject.registerClass(
class InputSourcePopup extends SwitcherPopup.SwitcherPopup {
_init(items, action, actionBackward) {
super._init(items);
}
});
-var InputSourceSwitcher = GObject.registerClass(
+const InputSourceSwitcher = GObject.registerClass(
class InputSourceSwitcher extends SwitcherPopup.SwitcherList {
_init(items) {
super._init(true);
}
});
-var InputSourceSettings = class extends Signals.EventEmitter {
+class InputSourceSettings extends Signals.EventEmitter {
constructor() {
super();
get perWindow() {
return false;
}
-};
+}
-var InputSourceSystemSettings = class extends InputSourceSettings {
+class InputSourceSystemSettings extends InputSourceSettings {
constructor() {
super();
get keyboardOptions() {
return this._options.split(',');
}
-};
+}
-var InputSourceSessionSettings = class extends InputSourceSettings {
+class InputSourceSessionSettings extends InputSourceSettings {
constructor() {
super();
get perWindow() {
return this._settings.get_boolean(this._KEY_PER_WINDOW);
}
-};
+}
-var InputSourceManager = class extends Signals.EventEmitter {
+export class InputSourceManager extends Signals.EventEmitter {
constructor() {
super();
get keyboardManager() {
return this._keyboardManager;
}
-};
+}
let _inputSourceManager = null;
/**
* @returns {InputSourceManager}
*/
-function getInputSourceManager() {
+export function getInputSourceManager() {
if (_inputSourceManager == null)
_inputSourceManager = new InputSourceManager();
return _inputSourceManager;
}
-var InputSourceIndicatorContainer = GObject.registerClass(
+const InputSourceIndicatorContainer = GObject.registerClass(
class InputSourceIndicatorContainer extends St.Widget {
vfunc_get_preferred_width(forHeight) {
// Here, and in vfunc_get_preferred_height, we need to query
}
});
-var InputSourceIndicator = GObject.registerClass(
+export const InputSourceIndicator = GObject.registerClass(
class InputSourceIndicator extends PanelMenu.Button {
_init() {
super._init(0.5, _("Keyboard"));
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Indicator */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const Dialog = imports.ui.dialog;
-const ModalDialog = imports.ui.modalDialog;
-const PermissionStore = imports.misc.permissionStore;
-const {SystemIndicator} = imports.ui.quickSettings;
+import * as Dialog from '../dialog.js';
+import * as ModalDialog from '../modalDialog.js';
+import * as PermissionStore from '../../misc/permissionStore.js';
+import {SystemIndicator} from '../quickSettings.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
const LOCATION_SCHEMA = 'org.gnome.system.location';
const MAX_ACCURACY_LEVEL = 'max-accuracy-level';
const APP_PERMISSIONS_ID = 'location';
/** @enum {number} */
-var GeoclueAccuracyLevel = {
+const GeoclueAccuracyLevel = {
NONE: 0,
COUNTRY: 1,
CITY: 4,
return 'NONE';
}
-var GeoclueIface = loadInterfaceXML('org.freedesktop.GeoClue2.Manager');
+const GeoclueIface = loadInterfaceXML('org.freedesktop.GeoClue2.Manager');
const GeoclueManager = Gio.DBusProxy.makeProxyWrapper(GeoclueIface);
-var AgentIface = loadInterfaceXML('org.freedesktop.GeoClue2.Agent');
+const AgentIface = loadInterfaceXML('org.freedesktop.GeoClue2.Agent');
let _geoclueAgent = null;
-function _getGeoclueAgent() {
+
+/**
+ * @returns {GeoclueAgent} - the GeoclueAgent singleton
+ */
+export function getGeoclueAgent() {
if (_geoclueAgent === null)
_geoclueAgent = new GeoclueAgent();
return _geoclueAgent;
}
-var GeoclueAgent = GObject.registerClass({
+const GeoclueAgent = GObject.registerClass({
Properties: {
'enabled': GObject.ParamSpec.boolean(
'enabled', 'Enabled', 'Enabled',
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
- this._agent = _getGeoclueAgent();
+ this._agent = getGeoclueAgent();
this._indicator = this._addIndicator();
this._indicator.icon_name = 'location-services-active-symbolic';
}
});
-var AppAuthorizer = class {
+class AppAuthorizer {
constructor(desktopId, reqAccuracyLevel, permStoreProxy, maxAccuracyLevel) {
this.desktopId = desktopId;
this.reqAccuracyLevel = reqAccuracyLevel;
log(error.message);
}
}
-};
+}
-var GeolocationDialog = GObject.registerClass({
+export const GeolocationDialog = GObject.registerClass({
Signals: { 'response': { param_types: [GObject.TYPE_UINT] } },
}, class GeolocationDialog extends ModalDialog.ModalDialog {
_init(name, reason, reqAccuracyLevel) {
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Indicator */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const NM = imports.gi.NM;
-const Polkit = imports.gi.Polkit;
-const St = imports.gi.St;
-
-const Main = imports.ui.main;
-const PopupMenu = imports.ui.popupMenu;
-const MessageTray = imports.ui.messageTray;
-const ModemManager = imports.misc.modemManager;
-const Util = imports.misc.util;
-
-const {Spinner} = imports.ui.animation;
-const {QuickMenuToggle, SystemIndicator} = imports.ui.quickSettings;
-
-const {loadInterfaceXML} = imports.misc.fileUtils;
-const {registerDestroyableType} = imports.misc.signalTracker;
+
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import NM from 'gi://NM';
+import Polkit from 'gi://Polkit';
+import St from 'gi://St';
+
+import * as Main from '../main.js';
+import * as PopupMenu from '../popupMenu.js';
+import * as MessageTray from '../messageTray.js';
+import * as ModemManager from '../../misc/modemManager.js';
+import * as Util from '../../misc/util.js';
+
+import {Spinner} from '../animation.js';
+import {QuickMenuToggle, SystemIndicator} from '../quickSettings.js';
+
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
+import {registerDestroyableType} from '../../misc/signalTracker.js';
Gio._promisify(Gio.DBusConnection.prototype, 'call');
Gio._promisify(NM.Client, 'new_async');
const NM80211Mode = NM['80211Mode'];
/** @enum {number} */
-var PortalHelperResult = {
+const PortalHelperResult = {
CANCELLED: 0,
COMPLETED: 1,
RECHECK: 2,
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Indicator */
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
-const {QuickToggle, SystemIndicator} = imports.ui.quickSettings;
+import {QuickToggle, SystemIndicator} from '../quickSettings.js';
-const {loadInterfaceXML} = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
const BUS_NAME = 'org.gnome.SettingsDaemon.Color';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Color';
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Indicator */
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
-const {QuickMenuToggle, SystemIndicator} = imports.ui.quickSettings;
+import {QuickMenuToggle, SystemIndicator} from '../quickSettings.js';
-const PopupMenu = imports.ui.popupMenu;
+import * as PopupMenu from '../popupMenu.js';
-const {loadInterfaceXML} = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
const BUS_NAME = 'net.hadess.PowerProfiles';
const OBJECT_PATH = '/net/hadess/PowerProfiles';
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported RemoteAccessApplet, ScreenRecordingIndicator, ScreenSharingIndicator */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const St = imports.gi.St;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import St from 'gi://St';
-const Main = imports.ui.main;
-const PanelMenu = imports.ui.panelMenu;
-const {SystemIndicator} = imports.ui.quickSettings;
+import * as Main from '../main.js';
+import * as PanelMenu from '../panelMenu.js';
+import {SystemIndicator} from '../quickSettings.js';
// Minimum amount of time the shared indicator is visible (in micro seconds)
const MIN_SHARED_INDICATOR_VISIBLE_TIME_US = 5 * GLib.TIME_SPAN_SECOND;
-var RemoteAccessApplet = GObject.registerClass(
+export const RemoteAccessApplet = GObject.registerClass(
class RemoteAccessApplet extends SystemIndicator {
_init() {
super._init();
}
});
-var ScreenRecordingIndicator = GObject.registerClass({
+export const ScreenRecordingIndicator = GObject.registerClass({
Signals: { 'menu-set': {} },
}, class ScreenRecordingIndicator extends PanelMenu.ButtonBox {
_init() {
}
});
-var ScreenSharingIndicator = GObject.registerClass({
+export const ScreenSharingIndicator = GObject.registerClass({
Signals: {'menu-set': {}},
}, class ScreenSharingIndicator extends PanelMenu.ButtonBox {
_init() {
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Indicator */
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
-const {QuickToggle, SystemIndicator} = imports.ui.quickSettings;
+import {QuickToggle, SystemIndicator} from '../quickSettings.js';
-const {loadInterfaceXML} = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
/**
* @returns {RfkillManager}
*/
-function getRfkillManager() {
+export function getRfkillManager() {
if (_manager != null)
return _manager;
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Indicator */
-
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-const UPower = imports.gi.UPowerGlib;
-
-const SystemActions = imports.misc.systemActions;
-const Main = imports.ui.main;
-const PopupMenu = imports.ui.popupMenu;
-const {PopupAnimation} = imports.ui.boxpointer;
-
-const {QuickSettingsItem, QuickToggle, SystemIndicator} = imports.ui.quickSettings;
-const {loadInterfaceXML} = imports.misc.fileUtils;
+
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import UPower from 'gi://UPowerGlib';
+
+import * as SystemActions from '../../misc/systemActions.js';
+import * as Main from '../main.js';
+import * as PopupMenu from '../popupMenu.js';
+import {PopupAnimation} from '../boxpointer.js';
+
+import {QuickSettingsItem, QuickToggle, SystemIndicator} from '../quickSettings.js';
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
const BUS_NAME = 'org.freedesktop.UPower';
const OBJECT_PATH = '/org/freedesktop/UPower/devices/DisplayDevice';
}
});
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Indicator */
// the following is a modified version of bolt/contrib/js/client.js
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Polkit = imports.gi.Polkit;
-const Shell = imports.gi.Shell;
-const Signals = imports.misc.signals;
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Polkit from 'gi://Polkit';
+import Shell from 'gi://Shell';
+import * as Signals from '../../misc/signals.js';
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
-const {SystemIndicator} = imports.ui.quickSettings;
+import * as Main from '../main.js';
+import * as MessageTray from '../messageTray.js';
+import {SystemIndicator} from '../quickSettings.js';
-const { loadInterfaceXML } = imports.misc.fileUtils;
+import {loadInterfaceXML} from '../../misc/fileUtils.js';
/* Keep in sync with data/org.freedesktop.bolt.xml */
const BoltDeviceProxy = Gio.DBusProxy.makeProxyWrapper(BoltDeviceInterface);
/** @enum {string} */
-var Status = {
+const Status = {
DISCONNECTED: 'disconnected',
CONNECTING: 'connecting',
CONNECTED: 'connected',
};
/** @enum {string} */
-var Policy = {
+const Policy = {
DEFAULT: 'default',
MANUAL: 'manual',
AUTO: 'auto',
};
/** @enum {string} */
-var AuthCtrl = {
+const AuthCtrl = {
NONE: 'none',
};
/** @enum {string} */
-var AuthMode = {
+const AuthMode = {
DISABLED: 'disabled',
ENABLED: 'enabled',
};
const BOLT_DBUS_NAME = 'org.freedesktop.bolt';
const BOLT_DBUS_PATH = '/org/freedesktop/bolt';
-var Client = class extends Signals.EventEmitter {
+class Client extends Signals.EventEmitter {
constructor() {
super();
get authMode() {
return this._proxy.AuthMode;
}
-};
+}
/* helper class to automatically authorize new devices */
-var AuthRobot = class extends Signals.EventEmitter {
+class AuthRobot extends Signals.EventEmitter {
constructor(client) {
super();
}
return GLib.SOURCE_REMOVE;
}
-};
+}
/* eof client.js */
-var Indicator = GObject.registerClass(
+export const Indicator = GObject.registerClass(
class Indicator extends SystemIndicator {
_init() {
super._init();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported OutputIndicator InputIndicator */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Gvc = imports.gi.Gvc;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Gvc from 'gi://Gvc';
-const Main = imports.ui.main;
-const PopupMenu = imports.ui.popupMenu;
+import * as Main from '../main.js';
+import * as PopupMenu from '../popupMenu.js';
-const {QuickSlider, SystemIndicator} = imports.ui.quickSettings;
+import {QuickSlider, SystemIndicator} from '../quickSettings.js';
const ALLOW_AMPLIFIED_VOLUME_KEY = 'allow-volume-above-100-percent';
const UNMUTE_DEFAULT_VOLUME = 0.25;
// Each Gvc.MixerControl is a connection to PulseAudio,
// so it's better to make it a singleton
let _mixerControl;
+
/**
* @returns {Gvc.MixerControl} - the mixer control singleton
*/
-function getMixerControl() {
+export function getMixerControl() {
if (_mixerControl)
return _mixerControl;
}
});
-var OutputIndicator = GObject.registerClass(
+export const OutputIndicator = GObject.registerClass(
class OutputIndicator extends VolumeIndicator {
constructor() {
super();
}
});
-var InputIndicator = GObject.registerClass(
+export const InputIndicator = GObject.registerClass(
class InputIndicator extends VolumeIndicator {
constructor() {
super();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported SwipeTracker */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
-const Main = imports.ui.main;
-const Params = imports.misc.params;
+import * as Main from './main.js';
+import * as Params from '../misc/params.js';
// FIXME: ideally these values matches physical touchpad size. We can get the
// correct values for gnome-shell specifically, since mutter uses libinput
// instantly.
/** A class for handling swipe gestures */
-var SwipeTracker = GObject.registerClass({
+export const SwipeTracker = GObject.registerClass({
Properties: {
'enabled': GObject.ParamSpec.boolean(
'enabled', 'enabled', 'enabled',
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported SwitchMonitorPopup */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import St from 'gi://St';
-const SwitcherPopup = imports.ui.switcherPopup;
+import * as SwitcherPopup from './switcherPopup.js';
-var APP_ICON_SIZE = 96;
+const APP_ICON_SIZE = 96;
-var SwitchMonitorPopup = GObject.registerClass(
+export const SwitchMonitorPopup = GObject.registerClass(
class SwitchMonitorPopup extends SwitcherPopup.SwitcherPopup {
_init() {
let items = [];
}
});
-var SwitchMonitorSwitcher = GObject.registerClass(
+const SwitchMonitorSwitcher = GObject.registerClass(
class SwitchMonitorSwitcher extends SwitcherPopup.SwitcherList {
_init(items) {
super._init(true);
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported SwitcherPopup, SwitcherList */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
-const Main = imports.ui.main;
+import * as Main from './main.js';
-var POPUP_DELAY_TIMEOUT = 150; // milliseconds
+const POPUP_DELAY_TIMEOUT = 150; // milliseconds
-var POPUP_SCROLL_TIME = 100; // milliseconds
-var POPUP_FADE_OUT_TIME = 100; // milliseconds
+const POPUP_SCROLL_TIME = 100; // milliseconds
+const POPUP_FADE_OUT_TIME = 100; // milliseconds
-var DISABLE_HOVER_TIMEOUT = 500; // milliseconds
-var NO_MODS_TIMEOUT = 1500; // milliseconds
+const DISABLE_HOVER_TIMEOUT = 500; // milliseconds
+const NO_MODS_TIMEOUT = 1500; // milliseconds
/**
* @param {number} a
* @param {number} b
* @returns {number}
*/
-function mod(a, b) {
+export function mod(a, b) {
return (a + b) % b;
}
return primary;
}
-var SwitcherPopup = GObject.registerClass({
+export const SwitcherPopup = GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
}, class SwitcherPopup extends St.Widget {
_init(items) {
}
});
-var SwitcherButton = GObject.registerClass(
+const SwitcherButton = GObject.registerClass(
class SwitcherButton extends St.Button {
_init(square) {
super._init({
}
});
-var SwitcherList = GObject.registerClass({
+export const SwitcherList = GObject.registerClass({
Signals: {
'item-activated': { param_types: [GObject.TYPE_INT] },
'item-entered': { param_types: [GObject.TYPE_INT] },
* @param {St.DrawingArrow} area
* @param {St.Side} side
*/
-function drawArrow(area, side) {
+export function drawArrow(area, side) {
let themeNode = area.get_theme_node();
let borderColor = themeNode.get_border_color(side);
let bodyColor = themeNode.get_foreground_color();
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported UnlockDialog */
-
-const AccountsService = imports.gi.AccountsService;
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const Gdm = imports.gi.Gdm;
-const Gio = imports.gi.Gio;
-const GnomeDesktop = imports.gi.GnomeDesktop;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const Background = imports.ui.background;
-const Layout = imports.ui.layout;
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
-const SwipeTracker = imports.ui.swipeTracker;
-const {formatDateWithCFormatString} = imports.misc.dateUtils;
-const AuthPrompt = imports.gdm.authPrompt;
+
+import AccountsService from 'gi://AccountsService';
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import Gdm from 'gi://Gdm';
+import Gio from 'gi://Gio';
+import GnomeDesktop from 'gi://GnomeDesktop';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as Background from './background.js';
+import * as Layout from './layout.js';
+import * as Main from './main.js';
+import * as MessageTray from './messageTray.js';
+import * as SwipeTracker from './swipeTracker.js';
+import {formatDateWithCFormatString} from '../misc/dateUtils.js';
+import * as AuthPrompt from '../gdm/authPrompt.js';
// The timeout before going back automatically to the lock screen (in seconds)
const IDLE_TIMEOUT = 2 * 60;
const SUMMARY_ICON_SIZE = 32;
-var NotificationsBox = GObject.registerClass({
+const NotificationsBox = GObject.registerClass({
Signals: { 'wake-up-screen': {} },
}, class NotificationsBox extends St.BoxLayout {
_init() {
}
});
-var Clock = GObject.registerClass(
+const Clock = GObject.registerClass(
class UnlockDialogClock extends St.BoxLayout {
_init() {
super._init({ style_class: 'unlock-dialog-clock', vertical: true });
}
});
-var UnlockDialogLayout = GObject.registerClass(
+const UnlockDialogLayout = GObject.registerClass(
class UnlockDialogLayout extends Clutter.LayoutManager {
_init(stack, notifications, switchUserButton) {
super._init();
}
});
-var UnlockDialog = GObject.registerClass({
+export const UnlockDialog = GObject.registerClass({
Signals: {
'failed': {},
'wake-up-screen': {},
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
//
// A widget showing the user avatar and name
-/* exported UserWidget */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
-const Params = imports.misc.params;
+import * as Params from '../misc/params.js';
-var AVATAR_ICON_SIZE = 64;
+const AVATAR_ICON_SIZE = 64;
// Adapted from gdm/gui/user-switch-applet/applet.c
//
// Copyright (C) 2004-2005 James M. Cape <jcape@ignore-your.tv>.
// Copyright (C) 2008,2009 Red Hat, Inc.
-var Avatar = GObject.registerClass(
+export const Avatar = GObject.registerClass(
class Avatar extends St.Bin {
_init(user, params) {
let themeContext = St.ThemeContext.get_for_stage(global.stage);
}
});
-var UserWidgetLabel = GObject.registerClass(
+export const UserWidgetLabel = GObject.registerClass(
class UserWidgetLabel extends St.Widget {
_init(user) {
super._init({ layout_manager: new Clutter.BinLayout() });
}
});
-var UserWidget = GObject.registerClass(
+export const UserWidget = GObject.registerClass(
class UserWidget extends St.BoxLayout {
_init(user, orientation = Clutter.Orientation.HORIZONTAL) {
// If user is null, that implies a username-based login authorization.
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported WelcomeDialog */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
const Config = imports.misc.config;
-const Dialog = imports.ui.dialog;
-const Main = imports.ui.main;
-const ModalDialog = imports.ui.modalDialog;
+import * as Main from './main.js';
+import * as Dialog from './dialog.js';
+import * as ModalDialog from './modalDialog.js';
/** @enum {number} */
-var DialogResponse = {
+const DialogResponse = {
NO_THANKS: 0,
TAKE_TOUR: 1,
};
-var WelcomeDialog = GObject.registerClass(
+export const WelcomeDialog = GObject.registerClass(
class WelcomeDialog extends ModalDialog.ModalDialog {
_init() {
super._init({ styleClass: 'welcome-dialog' });
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported WindowAttentionHandler */
-const GObject = imports.gi.GObject;
-const Shell = imports.gi.Shell;
+import GObject from 'gi://GObject';
+import Shell from 'gi://Shell';
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
+import * as Main from './main.js';
+import * as MessageTray from './messageTray.js';
-var WindowAttentionHandler = class {
+export class WindowAttentionHandler {
constructor() {
this._tracker = Shell.WindowTracker.get_default();
global.display.connectObject(
notification.update(title, banner);
}, source);
}
-};
+}
-var WindowAttentionSource = GObject.registerClass(
+const WindowAttentionSource = GObject.registerClass(
class WindowAttentionSource extends MessageTray.Source {
_init(app, window) {
this._window = window;
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported WindowManager */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const AltTab = imports.ui.altTab;
-const AppFavorites = imports.ui.appFavorites;
-const Dialog = imports.ui.dialog;
-const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
-const InhibitShortcutsDialog = imports.ui.inhibitShortcutsDialog;
-const Main = imports.ui.main;
-const ModalDialog = imports.ui.modalDialog;
-const WindowMenu = imports.ui.windowMenu;
-const PadOsd = imports.ui.padOsd;
-const EdgeDragAction = imports.ui.edgeDragAction;
-const CloseDialog = imports.ui.closeDialog;
-const SwitchMonitor = imports.ui.switchMonitor;
-const IBusManager = imports.misc.ibusManager;
-const WorkspaceAnimation = imports.ui.workspaceAnimation;
-
-const { loadInterfaceXML } = imports.misc.fileUtils;
-
-var SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
-var MINIMIZE_WINDOW_ANIMATION_TIME = 400;
-var MINIMIZE_WINDOW_ANIMATION_MODE = Clutter.AnimationMode.EASE_OUT_EXPO;
-var SHOW_WINDOW_ANIMATION_TIME = 150;
-var DIALOG_SHOW_WINDOW_ANIMATION_TIME = 100;
-var DESTROY_WINDOW_ANIMATION_TIME = 150;
-var DIALOG_DESTROY_WINDOW_ANIMATION_TIME = 100;
-var WINDOW_ANIMATION_TIME = 250;
-var SCROLL_TIMEOUT_TIME = 150;
-var DIM_BRIGHTNESS = -0.3;
-var DIM_TIME = 500;
-var UNDIM_TIME = 250;
-var APP_MOTION_THRESHOLD = 30;
-
-var ONE_SECOND = 1000; // in ms
-
-var MIN_NUM_WORKSPACES = 2;
+
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+
+import * as AltTab from './altTab.js';
+import * as AppFavorites from './appFavorites.js';
+import * as Dialog from './dialog.js';
+import * as WorkspaceSwitcherPopup from './workspaceSwitcherPopup.js';
+import * as InhibitShortcutsDialog from './inhibitShortcutsDialog.js';
+import * as ModalDialog from './modalDialog.js';
+import * as WindowMenu from './windowMenu.js';
+import * as PadOsd from './padOsd.js';
+import * as EdgeDragAction from './edgeDragAction.js';
+import * as CloseDialog from './closeDialog.js';
+import * as SwitchMonitor from './switchMonitor.js';
+import * as IBusManager from '../misc/ibusManager.js';
+import * as WorkspaceAnimation from './workspaceAnimation.js';
+
+import {loadInterfaceXML} from '../misc/fileUtils.js';
+import * as Main from './main.js';
+
+export const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
+
+const MINIMIZE_WINDOW_ANIMATION_TIME = 400;
+const MINIMIZE_WINDOW_ANIMATION_MODE = Clutter.AnimationMode.EASE_OUT_EXPO;
+const SHOW_WINDOW_ANIMATION_TIME = 150;
+const DIALOG_SHOW_WINDOW_ANIMATION_TIME = 100;
+const DESTROY_WINDOW_ANIMATION_TIME = 150;
+const DIALOG_DESTROY_WINDOW_ANIMATION_TIME = 100;
+const WINDOW_ANIMATION_TIME = 250;
+const SCROLL_TIMEOUT_TIME = 150;
+const DIM_BRIGHTNESS = -0.3;
+const DIM_TIME = 500;
+const UNDIM_TIME = 250;
+const APP_MOTION_THRESHOLD = 30;
+
+const ONE_SECOND = 1000; // in ms
+
+const MIN_NUM_WORKSPACES = 2;
const GSD_WACOM_BUS_NAME = 'org.gnome.SettingsDaemon.Wacom';
const GSD_WACOM_OBJECT_PATH = '/org/gnome/SettingsDaemon/Wacom';
Gio._promisify(Shell, 'util_start_systemd_unit');
Gio._promisify(Shell, 'util_stop_systemd_unit');
-var DisplayChangeDialog = GObject.registerClass(
+const DisplayChangeDialog = GObject.registerClass(
class DisplayChangeDialog extends ModalDialog.ModalDialog {
_init(wm) {
super._init();
}
});
-var WindowDimmer = GObject.registerClass(
+export const WindowDimmer = GObject.registerClass(
class WindowDimmer extends Clutter.BrightnessContrastEffect {
_init() {
super._init({
* the main window of an application, and give the app a grace period
* where it can map another window before we remove the workspace.
*/
-var LAST_WINDOW_GRACE_TIME = 1000;
+const LAST_WINDOW_GRACE_TIME = 1000;
-var WorkspaceTracker = class {
+class WorkspaceTracker {
constructor(wm) {
this._wm = wm;
return false;
}
-};
+}
-var TilePreview = GObject.registerClass(
+export const TilePreview = GObject.registerClass(
class TilePreview extends St.Widget {
_init() {
super._init();
}
});
-var AppSwitchAction = GObject.registerClass({
+const AppSwitchAction = GObject.registerClass({
Signals: { 'activated': {} },
}, class AppSwitchAction extends Clutter.GestureAction {
_init() {
}
});
-var ResizePopup = GObject.registerClass(
+const ResizePopup = GObject.registerClass(
class ResizePopup extends St.Widget {
_init() {
super._init({ layout_manager: new Clutter.BinLayout() });
}
});
-var WindowManager = class {
+export class WindowManager {
constructor() {
this._shellwm = global.window_manager;
this._resizePopup = null;
}
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*
-/* exported WindowMenuManager */
-const Clutter = imports.gi.Clutter;
-const Meta = imports.gi.Meta;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import Meta from 'gi://Meta';
+import St from 'gi://St';
-const BoxPointer = imports.ui.boxpointer;
-const Main = imports.ui.main;
-const PopupMenu = imports.ui.popupMenu;
-const Screenshot = imports.ui.screenshot;
+import * as BoxPointer from './boxpointer.js';
+import * as Main from './main.js';
+import * as PopupMenu from './popupMenu.js';
+import * as Screenshot from './screenshot.js';
-var WindowMenu = class extends PopupMenu.PopupMenu {
+export class WindowMenu extends PopupMenu.PopupMenu {
constructor(window, sourceActor) {
super(sourceActor, 0, St.Side.TOP);
if (!window.can_close())
item.setSensitive(false);
}
-};
+}
-var WindowMenuManager = class {
+export class WindowMenuManager {
constructor() {
this._manager = new PopupMenu.PopupMenuManager(Main.layoutManager.dummyCursor);
window.disconnect(destroyId);
});
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported WindowPreview */
-const Atk = imports.gi.Atk;
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Graphene = imports.gi.Graphene;
-const Meta = imports.gi.Meta;
-const Pango = imports.gi.Pango;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Atk from 'gi://Atk';
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Graphene from 'gi://Graphene';
+import Meta from 'gi://Meta';
+import Pango from 'gi://Pango';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const DND = imports.ui.dnd;
-const OverviewControls = imports.ui.overviewControls;
+import * as DND from './dnd.js';
+import * as OverviewControls from './overviewControls.js';
-var WINDOW_DND_SIZE = 256;
+const WINDOW_DND_SIZE = 256;
-var WINDOW_OVERLAY_IDLE_HIDE_TIMEOUT = 750;
-var WINDOW_OVERLAY_FADE_TIME = 200;
+const WINDOW_OVERLAY_IDLE_HIDE_TIMEOUT = 750;
+const WINDOW_OVERLAY_FADE_TIME = 200;
-var WINDOW_SCALE_TIME = 200;
-var WINDOW_ACTIVE_SIZE_INC = 5; // in each direction
+const WINDOW_SCALE_TIME = 200;
+const WINDOW_ACTIVE_SIZE_INC = 5; // in each direction
-var DRAGGING_WINDOW_OPACITY = 100;
+const DRAGGING_WINDOW_OPACITY = 100;
const ICON_SIZE = 64;
const ICON_OVERLAP = 0.7;
const ICON_TITLE_SPACING = 6;
-var WindowPreview = GObject.registerClass({
+export const WindowPreview = GObject.registerClass({
Properties: {
'overlay-enabled': GObject.ParamSpec.boolean(
'overlay-enabled', 'overlay-enabled', 'overlay-enabled',
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported Workspace */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Graphene = imports.gi.Graphene;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Graphene from 'gi://Graphene';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const Background = imports.ui.background;
-const DND = imports.ui.dnd;
-const Main = imports.ui.main;
-const OverviewControls = imports.ui.overviewControls;
-const Params = imports.misc.params;
-const Util = imports.misc.util;
-const { WindowPreview } = imports.ui.windowPreview;
+import * as Background from './background.js';
+import * as DND from './dnd.js';
+import * as Main from './main.js';
+import * as OverviewControls from './overviewControls.js';
+import * as Params from '../misc/params.js';
-var WINDOW_PREVIEW_MAXIMUM_SCALE = 0.95;
+import * as Util from '../misc/util.js';
+import {WindowPreview} from './windowPreview.js';
-var WINDOW_REPOSITIONING_DELAY = 750;
+const WINDOW_PREVIEW_MAXIMUM_SCALE = 0.95;
+
+const WINDOW_REPOSITIONING_DELAY = 750;
// When calculating a layout, we calculate the scale of windows and the percent
// of the available area the new layout uses. If the values for the new layout,
// when weighted with the values as below, are worse than the previous layout's,
// we stop looking for a new layout and use the previous layout.
// Otherwise, we keep looking for a new layout.
-var LAYOUT_SCALE_WEIGHT = 1;
-var LAYOUT_SPACE_WEIGHT = 0.1;
+const LAYOUT_SCALE_WEIGHT = 1;
+const LAYOUT_SPACE_WEIGHT = 0.1;
const BACKGROUND_CORNER_RADIUS_PIXELS = 30;
// each window's "cell" area to be the same, but we shrink the thumbnail
// and center it horizontally, and align it to the bottom vertically.
-var LayoutStrategy = class {
+export class LayoutStrategy {
constructor(params) {
params = Params.parse(params, {
monitor: null,
computeWindowSlots(_layout, _area) {
throw new GObject.NotImplementedError(`computeWindowSlots in ${this.constructor.name}`);
}
-};
+}
-var UnalignedLayoutStrategy = class extends LayoutStrategy {
+class UnalignedLayoutStrategy extends LayoutStrategy {
_newRow() {
// Row properties:
//
}
return slots;
}
-};
+}
function animateAllocation(actor, box) {
actor.save_easing_state();
return actor.get_transition('allocation');
}
-var WorkspaceLayout = GObject.registerClass({
+export const WorkspaceLayout = GObject.registerClass({
Properties: {
'spacing': GObject.ParamSpec.double(
'spacing', 'Spacing', 'Spacing',
}
});
-var WorkspaceBackground = GObject.registerClass(
+export const WorkspaceBackground = GObject.registerClass(
class WorkspaceBackground extends Shell.WorkspaceBackground {
_init(monitorIndex, stateAdjustment) {
super._init({
/**
* @metaWorkspace: a #Meta.Workspace, or null
*/
-var Workspace = GObject.registerClass(
+export const Workspace = GObject.registerClass(
class Workspace extends St.Widget {
_init(metaWorkspace, monitorIndex, overviewAdjustment) {
super._init({
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported WorkspaceAnimationController, WorkspaceGroup */
-const Clutter = imports.gi.Clutter;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const Background = imports.ui.background;
-const Layout = imports.ui.layout;
-const Main = imports.ui.main;
-const SwipeTracker = imports.ui.swipeTracker;
+import * as Background from './background.js';
+import * as Layout from './layout.js';
+import * as SwipeTracker from './swipeTracker.js';
+
+import * as Main from './main.js';
const WINDOW_ANIMATION_TIME = 250;
const WORKSPACE_SPACING = 100;
-var WorkspaceGroup = GObject.registerClass(
+const WorkspaceGroup = GObject.registerClass(
class WorkspaceGroup extends Clutter.Actor {
_init(workspace, monitor, movingWindow) {
super._init();
}
});
-var WorkspaceAnimationController = class {
+export class WorkspaceAnimationController {
constructor() {
this._movingWindow = null;
this._switchData = null;
get movingWindow() {
return this._movingWindow;
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported WorkspaceSwitcherPopup */
-const Clutter = imports.gi.Clutter;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import St from 'gi://St';
-const Layout = imports.ui.layout;
-const Main = imports.ui.main;
+import * as Layout from './layout.js';
+import * as Main from './main.js';
-var ANIMATION_TIME = 100;
-var DISPLAY_TIMEOUT = 600;
+const ANIMATION_TIME = 100;
+const DISPLAY_TIMEOUT = 600;
-var WorkspaceSwitcherPopup = GObject.registerClass(
+export const WorkspaceSwitcherPopup = GObject.registerClass(
class WorkspaceSwitcherPopup extends Clutter.Actor {
_init() {
super._init({
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported WorkspaceThumbnail, ThumbnailsBox */
-
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GLib = imports.gi.GLib;
-const GObject = imports.gi.GObject;
-const Graphene = imports.gi.Graphene;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
-
-const DND = imports.ui.dnd;
-const Main = imports.ui.main;
-const { TransientSignalHolder } = imports.misc.signalTracker;
-const Util = imports.misc.util;
-const Workspace = imports.ui.workspace;
+
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
+import Graphene from 'gi://Graphene';
+
+import * as DND from './dnd.js';
+import * as Main from './main.js';
+import {TransientSignalHolder} from '../misc/signalTracker.js';
+import * as Util from '../misc/util.js';
+import * as Workspace from './workspace.js';
const NUM_WORKSPACES_THRESHOLD = 2;
// The maximum size of a thumbnail is 5% the width and height of the screen
-var MAX_THUMBNAIL_SCALE = 0.05;
+export const MAX_THUMBNAIL_SCALE = 0.05;
-var RESCALE_ANIMATION_TIME = 200;
-var SLIDE_ANIMATION_TIME = 200;
+const RESCALE_ANIMATION_TIME = 200;
+const SLIDE_ANIMATION_TIME = 200;
// When we create workspaces by dragging, we add a "cut" into the top and
// bottom of each workspace so that the user doesn't have to hit the
// placeholder exactly.
-var WORKSPACE_CUT_SIZE = 10;
+const WORKSPACE_CUT_SIZE = 10;
-var WORKSPACE_KEEP_ALIVE_TIME = 100;
+const WORKSPACE_KEEP_ALIVE_TIME = 100;
-var MUTTER_SCHEMA = 'org.gnome.mutter';
+const MUTTER_SCHEMA = 'org.gnome.mutter';
/* A layout manager that requests size only for primary_actor, but then allocates
all using a fixed layout */
-var PrimaryActorLayout = GObject.registerClass(
+const PrimaryActorLayout = GObject.registerClass(
class PrimaryActorLayout extends Clutter.FixedLayout {
_init(primaryActor) {
super._init();
}
});
-var WindowClone = GObject.registerClass({
+export const WindowClone = GObject.registerClass({
Signals: {
'drag-begin': {},
'drag-cancelled': {},
});
-var ThumbnailState = {
+const ThumbnailState = {
NEW: 0,
EXPANDING: 1,
EXPANDED: 2,
/**
* @metaWorkspace: a #Meta.Workspace
*/
-var WorkspaceThumbnail = GObject.registerClass({
+export const WorkspaceThumbnail = GObject.registerClass({
Properties: {
'collapse-fraction': GObject.ParamSpec.double(
'collapse-fraction', 'collapse-fraction', 'collapse-fraction',
});
-var ThumbnailsBox = GObject.registerClass({
+export const ThumbnailsBox = GObject.registerClass({
Properties: {
'expand-fraction': GObject.ParamSpec.double(
'expand-fraction', 'expand-fraction', 'expand-fraction',
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported WorkspacesView, WorkspacesDisplay */
-const Clutter = imports.gi.Clutter;
-const Gio = imports.gi.Gio;
-const GObject = imports.gi.GObject;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-const St = imports.gi.St;
+import Clutter from 'gi://Clutter';
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+import Meta from 'gi://Meta';
+import Shell from 'gi://Shell';
+import St from 'gi://St';
-const Layout = imports.ui.layout;
-const Main = imports.ui.main;
-const OverviewControls = imports.ui.overviewControls;
-const SwipeTracker = imports.ui.swipeTracker;
-const Util = imports.misc.util;
-const Workspace = imports.ui.workspace;
-const { ThumbnailsBox, MAX_THUMBNAIL_SCALE } = imports.ui.workspaceThumbnail;
+import * as Layout from './layout.js';
-var WORKSPACE_SWITCH_TIME = 250;
+import * as Main from './main.js';
+import * as OverviewControls from './overviewControls.js';
+import * as SwipeTracker from './swipeTracker.js';
+import * as Util from '../misc/util.js';
+import * as Workspace from './workspace.js';
+import {ThumbnailsBox, MAX_THUMBNAIL_SCALE} from './workspaceThumbnail.js';
+
+const WORKSPACE_SWITCH_TIME = 250;
const MUTTER_SCHEMA = 'org.gnome.mutter';
const SECONDARY_WORKSPACE_SCALE = 0.80;
-var WorkspacesViewBase = GObject.registerClass({
+const WorkspacesViewBase = GObject.registerClass({
GTypeFlags: GObject.TypeFlags.ABSTRACT,
}, class WorkspacesViewBase extends St.Widget {
_init(monitorIndex, overviewAdjustment) {
});
/** @enum {number} */
-var FitMode = {
+export const FitMode = {
SINGLE: 0,
ALL: 1,
};
-var WorkspacesView = GObject.registerClass(
+export const WorkspacesView = GObject.registerClass(
class WorkspacesView extends WorkspacesViewBase {
_init(monitorIndex, controls, scrollAdjustment, fitModeAdjustment, overviewAdjustment) {
let workspaceManager = global.workspace_manager;
}
});
-var ExtraWorkspaceView = GObject.registerClass(
+export const ExtraWorkspaceView = GObject.registerClass(
class ExtraWorkspaceView extends WorkspacesViewBase {
_init(monitorIndex, overviewAdjustment) {
super._init(monitorIndex, overviewAdjustment);
}
});
-const SecondaryMonitorDisplay = GObject.registerClass(
+export const SecondaryMonitorDisplay = GObject.registerClass(
class SecondaryMonitorDisplay extends St.Widget {
_init(monitorIndex, controls, scrollAdjustment, fitModeAdjustment, overviewAdjustment) {
this._monitorIndex = monitorIndex;
}
});
-var WorkspacesDisplay = GObject.registerClass(
+export const WorkspacesDisplay = GObject.registerClass(
class WorkspacesDisplay extends St.Widget {
_init(controls, scrollAdjustment, overviewAdjustment) {
super._init({
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported XdndHandler */
-const Clutter = imports.gi.Clutter;
-const Signals = imports.misc.signals;
+import Clutter from 'gi://Clutter';
+import * as Signals from '../misc/signals.js';
-const DND = imports.ui.dnd;
-const Main = imports.ui.main;
+import * as DND from './dnd.js';
+import * as Main from './main.js';
-var XdndHandler = class extends Signals.EventEmitter {
+export class XdndHandler extends Signals.EventEmitter {
constructor() {
super();
pickedActor = pickedActor.get_parent();
}
}
-};
+}
import St from 'gi://St';
-const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
-import * as Scripting from 'resource://org/gnome/shell/ui/scripting.js';
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
+import * as MessageTray from 'resource:///org/gnome/shell/ui/messageTray.js';
+import * as Scripting from 'resource:///org/gnome/shell/ui/scripting.js';
// This script tests the most important (basic) functionality of the shell.
import Clutter from 'gi://Clutter';
-const Main = imports.ui.main;
-import * as Scripting from 'resource://org/gnome/shell/ui/scripting.js';
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
+import * as Scripting from 'resource:///org/gnome/shell/ui/scripting.js';
/** Run test. */
export async function run() {
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* eslint camelcase: ["error", { properties: "never", allow: ["^script_", "^malloc", "^glx", "^clutter"] }] */
-import System from 'system';
+import * as System from 'system';
-const Main = imports.ui.main;
-import * as Scripting from 'resource://org/gnome/shell/ui/scripting.js';
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
+import * as Scripting from 'resource:///org/gnome/shell/ui/scripting.js';
// This performance script measure the most important (core) performance
// metrics for the shell. By looking at the output metrics of this script
import MetaTest from 'gi://MetaTest';
import Shell from 'gi://Shell';
-const Main = imports.ui.main;
-import * as Scripting from 'resource://org/gnome/shell/ui/scripting.js';
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
+import * as Scripting from 'resource:///org/gnome/shell/ui/scripting.js';
// This script tests that the shell handles connecting monitors after startup
// is properly handled.
() => Scripting.scriptEvent('overviewShowDone'));
Main.overview.connect('hidden',
() => Scripting.scriptEvent('overviewHideDone'));
-
Main.overview.hide();
await Scripting.waitLeisure();
import Clutter from 'gi://Clutter';
import Gio from 'gi://Gio';
import Shell from 'gi://Shell';
-const Main = imports.ui.main;
-import * as Scripting from 'resource://org/gnome/shell/ui/scripting.js';
+
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
+import * as Scripting from 'resource:///org/gnome/shell/ui/scripting.js';
export var METRICS = {
timeToDesktop: {
import Pango from 'gi://Pango';
import '../../js/ui/environment.js';
-const Util = imports.misc.util;
+import * as Util from '../../js/misc/util.js';
const tests = [
{
import * as Assertions from '../common/assertions.js';
-const Util = imports.misc.util;
+import * as Util from '../../js/misc/util.js';
let arrayInt = [1, 2, 3, 5, 6];
Util.insertSorted(arrayInt, 4, (one, two) => one - two);
import * as Assertions from '../common/assertions.js';
-const JsParse = imports.misc.jsParse;
+import * as JsParse from '../../js/misc/jsParse.js';
const HARNESS_COMMAND_HEADER = 'let imports = obj;' +
'let global = obj;' +
import Pango from 'gi://Pango';
import '../../js/ui/environment.js';
+import '../../js/ui/main.js';
-imports.ui.main; // eslint-disable-line no-unused-expressions
-const MessageList = imports.ui.messageList;
+import * as MessageList from '../../js/ui/messageList.js';
/**
* Assert that `input`, assumed to be markup, gets "fixed" to `output`,
const JsUnit = imports.jsUnit;
-const Params = imports.misc.params;
+import * as Params from '../../js/misc/params.js';
/**
* Asserts that two "param" objects have the same properties
import GObject from 'gi://GObject';
const JsUnit = imports.jsUnit;
-const Signals = imports.misc.signals;
+import * as Signals from '../../js/misc/signals.js';
-const {TransientSignalHolder, registerDestroyableType} = imports.misc.signalTracker;
+import {TransientSignalHolder, registerDestroyableType} from '../../js/misc/signalTracker.js';
const Destroyable = GObject.registerClass({
Signals: {'destroy': {}},
import '../../js/ui/environment.js';
-const Util = imports.misc.util;
+import * as Util from '../../js/misc/util.js';
const tests = [
{
import '../../js/ui/environment.js';
-const Util = imports.misc.util;
+import * as Util from '../../js/misc/util.js';
const tests = [
{